004B7384 53 push ebx
004B7385 55 push ebp
004B7386 56 push esi //入棧保存現場
004B7387 8B7424 10 mov esi,dword ptr ss:[esp+0x10] // esi = B 應該也是壹個地址
004B738B 57 push edi //
004B738C 33FF xor edi,edi // 0
004B738E 8B2E mov ebp,dword ptr ds:[esi] //ebp保存基址
004B7390 8B56 04 mov edx,dword ptr ds:[esi+0x4] // edx = C
004B7393 8B46 08 mov eax,dword ptr ds:[esi+0x8] // eax = D
004B7396 3BCF cmp ecx,edi // 判斷 ECX(A) 是否 > 0
004B7398 897C24 14 mov dword ptr ss:[esp+0x14],edi //esp+0x14 = 0
004B739C 76 3A jbe Xserver_c.004B73D8 // 不是的話則跳轉到 004B73D8
004B739E 83F8 01 cmp eax,0x1 // 否則比較 eax(D) 是否比 1 小
004B73A1 72 35 jb Xserver_c.004B73D8 //是的話 跳到 004B73D8
004B73A3 B9 07000000 mov ecx,0x7 // 否則 ecx(A) = 7
004B73A8 BB 01000000 mov ebx,0x1 // ebx = 1
004B73AD 2BCA sub ecx,edx // ecx = 7 - edx (C)
004B73AF D3E3 shl ebx,cl // ebx 向←移動 cl 位(Byte/最後壹位進入CF位)
004B73B1 8A4D 00 mov cl,byte ptr ss:[ebp] // 也就是 B 地址的第壹個字節 呵呵~~
004B73B4 22D9 and bl,cl // bl cl 兩個 Byte 寄存器 & 操作
004B73B6 F6DB neg bl // bl 求補 用 0 - bl
004B73B8 1BDB sbb ebx,ebx // 看 CF 位 CF 位 = 0 那麽 ebx = 0 否則 ebx = 0xFFFFFFFF
004B73BA F7DB neg ebx // ebx 求補
004B73BC 42 inc edx // ebx++
004B73BD 83E2 07 and edx,0x7 // ebx 與 7 與操作 ..ebx最高只能為 7
004B73C0 8D3C7B lea edi,dword ptr ds:[ebx+edi*2] // edi = ds:[ebx+edi*2] 的地址
004B73C3 75 02 jnz Xserver_c.004B73C7 // 若 and 結果不為 0 則跳轉 到 004B73C7
004B73C5 48 dec eax // D--
004B73C6 45 inc ebp // ebp ++
// 004B73C7 //
8B4C24 14 mov ecx,dword ptr ss:[esp+0x14] // ecx = 0 (esp+0x14 = 0)
004B73CB 8B5C24 18 mov ebx,dword ptr ss:[esp+0x18] // ebx = esp+0x18
004B73CF 41 inc ecx // ecx ++ ecx = 1
004B73D0 3BCB cmp ecx,ebx // 1 - ebx
004B73D2 894C24 14 mov dword ptr ss:[esp+0x14],ecx // esp+0x14 = 1
004B73D6 ^ 72 C6 jb Xserver_c.004B739E // ebx 是否 > 1 大於 則 轉移 004B739E
// 004B73D8 //
8946 08 mov dword ptr ds:[esi+0x8],eax // D = eax
004B73DB 8BC7 mov eax,edi // 看之前的跳轉分支 ... 決定 eax 是什麽 ..
004B73DD 892E mov dword ptr ds:[esi],ebp
004B73DF 8956 04 mov dword ptr ds:[esi+0x4],edx // C = edx
004B73E2 5F pop edi // 出棧 恢復現場
004B73E3 5E pop esi
004B73E4 5D pop ebp
004B73E5 5B pop ebx
004B73E6 C3 retn //子程序返回