sub_4C4D60 proc near ; CODE XREF: sub_4C5970+5Ap .text:004C4D60 ; sub_4C5970+9Ap ... .text:004C4D60 .text:004C4D60 arg_0 = dword ptr 4 .text:004C4D60 arg_4 = dword ptr 8 .text:004C4D60 arg_8 = dword ptr 0Ch .text:004C4D60 arg_C = dword ptr 10h .text:004C4D60 arg_10 = dword ptr 14h .text:004C4D60 .text:004C4D60 mov eax, [esp+arg_8] .text:004C4D64 push ebx .text:004C4D65 mov ebx, [esp+4+arg_4] .text:004C4D69 push ebp .text:004C4D6A mov ebp, [esp+8+arg_C] .text:004C4D6E push esi .text:004C4D6F mov esi, eax .text:004C4D71 shr esi, 2 .text:004C4D74 xor ecx, ecx .text:004C4D76 test esi, esi .text:004C4D78 push edi .text:004C4D79 mov edi, [esp+10h+arg_0] .text:004C4D7D jle short loc_4C4DA2 .text:004C4D7F nop .text:004C4D80 .text:004C4D80 loc_4C4D80: ; CODE XREF: sub_4C4D60+3Cj .text:004C4D80 mov eax, ecx .text:004C4D82 cdq .text:004C4D83 idiv [esp+10h+arg_10] .text:004C4D87 add ecx, 1 .text:004C4D8A add edi, 4 .text:004C4D8D add ebx, 4 .text:004C4D90 mov eax, [ebp+edx*4+0] .text:004C4D94 xor eax, [edi-4] .text:004C4D97 cmp ecx, esi .text:004C4D99 mov [ebx-4], eax .text:004C4D9C jl short loc_4C4D80 .text:004C4D9E mov eax, [esp+10h+arg_8] .text:004C4DA2 .text:004C4DA2 loc_4C4DA2: ; CODE XREF: sub_4C4D60+1Dj .text:004C4DA2 and eax, 3 .text:004C4DA5 mov esi, eax .text:004C4DA7 jz short loc_4C4DF4 .text:004C4DA9 mov eax, ecx .text:004C4DAB cdq .text:004C4DAC idiv [esp+10h+arg_10] .text:004C4DB0 mov eax, esi .text:004C4DB2 sub eax, 1 .text:004C4DB5 mov edx, [ebp+edx*4+0] .text:004C4DB9 jz short loc_4C4DEE .text:004C4DBB sub eax, 1 .text:004C4DBE jz short loc_4C4DDE .text:004C4DC0 sub eax, 1 .text:004C4DC3 jnz short loc_4C4DF4 .text:004C4DC5 mov cx, [edi] .text:004C4DC8 xor cx, dx .text:004C4DCB mov [ebx], cx .text:004C4DCE shr edx, 10h .text:004C4DD1 xor dl, [edi+2] .text:004C4DD4 pop edi .text:004C4DD5 pop esi .text:004C4DD6 pop ebp .text:004C4DD7 mov [ebx+2], dl .text:004C4DDA pop ebx .text:004C4DDB retn 14h .text:004C4DDE ; --------------------------------------------------------------------------- .text:004C4DDE .text:004C4DDE loc_4C4DDE: ; CODE XREF: sub_4C4D60+5Ej .text:004C4DDE mov ax, [edi] .text:004C4DE1 pop edi .text:004C4DE2 pop esi .text:004C4DE3 xor ax, dx .text:004C4DE6 pop ebp .text:004C4DE7 mov [ebx], ax .text:004C4DEA pop ebx .text:004C4DEB retn 14h .text:004C4DEE ; --------------------------------------------------------------------------- .text:004C4DEE .text:004C4DEE loc_4C4DEE: ; CODE XREF: sub_4C4D60+59j .text:004C4DEE mov cl, [edi] .text:004C4DF0 xor cl, dl .text:004C4DF2 mov [ebx], cl .text:004C4DF4 .text:004C4DF4 loc_4C4DF4: ; CODE XREF: sub_4C4D60+47j .text:004C4DF4 ; sub_4C4D60+63j .text:004C4DF4 pop edi .text:004C4DF5 pop esi .text:004C4DF6 pop ebp .text:004C4DF7 pop ebx .text:004C4DF8 retn 14h .text:004C4DF8 sub_4C4D60 endp .text:004C4DF8 .text:004C4DF8 ; --------------------------------------------------------------------------- .text:004C4DFB align 10h .text:004C4E00 .text:004C4E00 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ .text:004C4E00 .text:004C4E00 .text:004C4E00 sub_4C4E00 proc near ; CODE XREF: sub_4C7D30+CDp .text:004C4E00 .text:004C4E00 arg_0 = dword ptr 4 .text:004C4E00 .text:004C4E00 mov ecx, [esp+arg_0] .text:004C4E04 mov eax, [esp+arg_0] .text:004C4E08 push ebx .text:004C4E09 push ebp .text:004C4E0A push esi .text:004C4E0B push edi .text:004C4E0C xor esi, esi .text:004C4E0E xor edi, edi .text:004C4E10 mov ebp, 0FFh .text:004C4E15 .text:004C4E15 loc_4C4E15: ; CODE XREF: sub_4C4E00+EEj .text:004C4E15 cmp ecx, 9 ; switch 10 cases .text:004C4E18 ja loc_4C4ECD ; default .text:004C4E1E jmp ds:off_4C4EFC[ecx*4] ; switch jump .text:004C4E25 .text:004C4E25 loc_4C4E25: ; DATA XREF: .text:off_4C4EFCo .text:004C4E25 mov eax, esi ; case 0x0 .text:004C4E27 jmp loc_4C4ECD ; default .text:004C4E2C ; --------------------------------------------------------------------------- .text:004C4E2C .text:004C4E2C loc_4C4E2C: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E2C ; DATA XREF: .text:off_4C4EFCo .text:004C4E2C lea eax, [esi+1] ; case 0x1 .text:004C4E2F .text:004C4E2F loc_4C4E2F: ; CODE XREF: sub_4C4E00+5Bj .text:004C4E2F mov ebx, esi .text:004C4E31 and bl, 1 .text:004C4E34 neg bl .text:004C4E36 cdq .text:004C4E37 sbb ebx, ebx .text:004C4E39 and ebx, 0FFFFFFFEh .text:004C4E3C sub eax, edx .text:004C4E3E sar eax, 1 .text:004C4E40 add ebx, 1 .text:004C4E43 imul ebx, eax .text:004C4E46 add ebx, 80h .text:004C4E4C mov eax, ebx .text:004C4E4E jmp short loc_4C4ECD ; default .text:004C4E50 ; --------------------------------------------------------------------------- .text:004C4E50 .text:004C4E50 loc_4C4E50: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E50 ; DATA XREF: .text:off_4C4EFCo .text:004C4E50 mov eax, 0FFh ; case 0x2 .text:004C4E55 sub eax, esi .text:004C4E57 jmp short loc_4C4ECD ; default .text:004C4E59 ; --------------------------------------------------------------------------- .text:004C4E59 .text:004C4E59 loc_4C4E59: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E59 ; DATA XREF: .text:off_4C4EFCo .text:004C4E59 mov eax, ebp ; case 0x3 .text:004C4E5B jmp short loc_4C4E2F .text:004C4E5D ; --------------------------------------------------------------------------- .text:004C4E5D .text:004C4E5D loc_4C4E5D: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E5D ; DATA XREF: .text:off_4C4EFCo .text:004C4E5D mov eax, esi ; case 0x4 .text:004C4E5F shr eax, 4 .text:004C4E62 imul eax, eax .text:004C4E65 jmp short loc_4C4ECD ; default .text:004C4E67 ; --------------------------------------------------------------------------- .text:004C4E67 .text:004C4E67 loc_4C4E67: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E67 ; DATA XREF: .text:off_4C4EFCo .text:004C4E67 mov eax, edi ; case 0x5 .text:004C4E69 and eax, 800000FFh .text:004C4E6E jns short loc_4C4ECD ; default .text:004C4E70 dec eax .text:004C4E71 or eax, 0FFFFFF00h .text:004C4E76 inc eax .text:004C4E77 jmp short loc_4C4ECD ; default .text:004C4E79 ; --------------------------------------------------------------------------- .text:004C4E79 .text:004C4E79 loc_4C4E79: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E79 ; DATA XREF: .text:off_4C4EFCo .text:004C4E79 mov edx, edi ; case 0x6 .text:004C4E7B jmp short loc_4C4EB6 .text:004C4E7D ; --------------------------------------------------------------------------- .text:004C4E7D .text:004C4E7D loc_4C4E7D: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E7D ; DATA XREF: .text:off_4C4EFCo .text:004C4E7D cmp esi, 7Fh ; case 0x7 .text:004C4E80 jg short loc_4C4E8B .text:004C4E82 mov eax, 0FFh .text:004C4E87 sub eax, edi .text:004C4E89 jmp short loc_4C4ECD ; default .text:004C4E8B ; --------------------------------------------------------------------------- .text:004C4E8B .text:004C4E8B loc_4C4E8B: ; CODE XREF: sub_4C4E00+80j .text:004C4E8B lea eax, [edi-100h] .text:004C4E91 jmp short loc_4C4ECD ; default .text:004C4E93 ; --------------------------------------------------------------------------- .text:004C4E93 .text:004C4E93 loc_4C4E93: ; CODE XREF: sub_4C4E00+1Ej .text:004C4E93 ; DATA XREF: .text:off_4C4EFCo .text:004C4E93 cmp esi, 7Fh ; case 0x8 .text:004C4E96 jg short loc_4C4E9C .text:004C4E98 mov eax, edi .text:004C4E9A jmp short loc_4C4ECD ; default .text:004C4E9C ; --------------------------------------------------------------------------- .text:004C4E9C .text:004C4E9C loc_4C4E9C: ; CODE XREF: sub_4C4E00+96j .text:004C4E9C mov eax, 1FFh .text:004C4EA1 sub eax, edi .text:004C4EA3 jmp short loc_4C4ECD ; default .text:004C4EA5 ; --------------------------------------------------------------------------- .text:004C4EA5 .text:004C4EA5 loc_4C4EA5: ; CODE XREF: sub_4C4E00+1Ej .text:004C4EA5 ; DATA XREF: .text:off_4C4EFCo .text:004C4EA5 lea eax, [esi-80h] ; case 0x9 .text:004C4EA8 cdq .text:004C4EA9 and edx, 7 .text:004C4EAC add eax, edx .text:004C4EAE sar eax, 3 .text:004C4EB1 mov edx, eax .text:004C4EB3 imul edx, eax .text:004C4EB6 .text:004C4EB6 loc_4C4EB6: ; CODE XREF: sub_4C4E00+7Bj .text:004C4EB6 and edx, 800000FFh .text:004C4EBC jns short loc_4C4EC6 .text:004C4EBE dec edx .text:004C4EBF or edx, 0FFFFFF00h .text:004C4EC5 inc edx .text:004C4EC6 .text:004C4EC6 loc_4C4EC6: ; CODE XREF: sub_4C4E00+BCj .text:004C4EC6 mov eax, 0FFh .text:004C4ECB sub eax, edx .text:004C4ECD .text:004C4ECD loc_4C4ECD: ; CODE XREF: sub_4C4E00+18j .text:004C4ECD ; sub_4C4E00+27j ... .text:004C4ECD mov edx, eax ; default .text:004C4ECF shl edx, 8 .text:004C4ED2 or eax, edx .text:004C4ED4 mov edx, eax .text:004C4ED6 shl edx, 10h .text:004C4ED9 or eax, edx .text:004C4EDB mov dword_584638[esi*4], eax .text:004C4EE2 sub ebp, 1 .text:004C4EE5 add esi, 1 .text:004C4EE8 add edi, 2 .text:004C4EEB cmp ebp, 0FFFFFFFFh .text:004C4EEE jg loc_4C4E15 .text:004C4EF4 pop edi .text:004C4EF5 pop esi .text:004C4EF6 pop ebp .text:004C4EF7 pop ebx .text:004C4EF8 retn 4 .text:004C4EF8 sub_4C4E00 endp .text:004C4EF8 .text:004C4EF8 ; --------------------------------------------------------------------------- .text:004C4EFB align 4 .text:004C4EFC off_4C4EFC dd offset loc_4C4E25 ; DATA XREF: sub_4C4E00+1Er .text:004C4EFC dd offset loc_4C4E2C ; jump table for switch statement .text:004C4EFC dd offset loc_4C4E50 .text:004C4EFC dd offset loc_4C4E59 .text:004C4EFC dd offset loc_4C4E5D .text:004C4EFC dd offset loc_4C4E67 .text:004C4EFC dd offset loc_4C4E79 .text:004C4EFC dd offset loc_4C4E7D .text:004C4EFC dd offset loc_4C4E93 .text:004C4EFC dd offset loc_4C4EA5 .text:004C4F24 align 10h .text:004C4F30 .text:004C4F30 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ .text:004C4F30 .text:004C4F30 .text:004C4F30 sub_4C4F30 proc near ; CODE XREF: sub_4C5470+8Ep .text:004C4F30 ; sub_4C7D30+E0p .text:004C4F30 .text:004C4F30 arg_0 = dword ptr 10h .text:004C4F30 arg_4 = dword ptr 14h .text:004C4F30 .text:004C4F30 push ebx .text:004C4F31 push esi .text:004C4F32 push edi .text:004C4F33 call sub_47F3D0 .text:004C4F38 mov edi, [esp+arg_0] .text:004C4F3C mov ebx, [esp+arg_4] .text:004C4F40 push edi .text:004C4F41 mov esi, eax .text:004C4F43 push ebx .text:004C4F44 push offset unk_58B07C .text:004C4F49 mov ecx, esi .text:004C4F4B call sub_47F5C0 .text:004C4F50 push edi .text:004C4F51 push offset unk_58B07C .text:004C4F56 push offset dword_58B090 .text:004C4F5B mov ecx, esi .text:004C4F5D mov dword_58B088, edi .text:004C4F63 call sub_47F5C0 .text:004C4F68 mov eax, dword_58B088 .text:004C4F6D push eax .text:004C4F6E push offset unk_58B07C .text:004C4F73 lea eax, dword_58B090[eax] .text:004C4F79 push eax .text:004C4F7A mov ecx, esi .text:004C4F7C call sub_47F5C0 .text:004C4F81 mov eax, dword_58B088 .text:004C4F86 push eax .text:004C4F87 lea ecx, ds:58B090h[eax*2] .text:004C4F8E push offset unk_58B07C .text:004C4F93 push ecx .text:004C4F94 mov ecx, esi .text:004C4F96 call sub_47F5C0 .text:004C4F9B mov eax, dword_58B088 .text:004C4FA0 push eax .text:004C4FA1 push offset unk_58B07C .text:004C4FA6 lea edx, dword_58B090[eax+eax*2] .text:004C4FAD push edx .text:004C4FAE mov ecx, esi .text:004C4FB0 call sub_47F5C0 .text:004C4FB5 push ebx ; void * .text:004C4FB6 mov ecx, esi .text:004C4FB8 call sub_47F510 .text:004C4FBD pop edi .text:004C4FBE pop esi .text:004C4FBF pop ebx .text:004C4FC0 retn 8 .text:004C4FC0 sub_4C4F30 endp .text:004C4FC0 .text:004C4FC0 ; --------------------------------------------------------------------------- .text:004C4FC3 align 10h .text:004C4FD0 .text:004C4FD0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ .text:004C4FD0 .text:004C4FD0 .text:004C4FD0 ; int __cdecl sub_4C4FD0(LPCWSTR lpWideCharStr,int) .text:004C4FD0 sub_4C4FD0 proc near ; CODE XREF: sub_4C7640+213p .text:004C4FD0 .text:004C4FD0 name = byte ptr -68h .text:004C4FD0 var_4 = dword ptr -4 .text:004C4FD0 lpWideCharStr = dword ptr 4 .text:004C4FD0 arg_4 = dword ptr 8 .text:004C4FD0 .text:004C4FD0 sub esp, 68h .text:004C4FD3 mov eax, dword_588760 .text:004C4FD8 xor eax, esp .text:004C4FDA mov [esp+68h+var_4], eax .text:004C4FDE mov edx, [esp+68h+lpWideCharStr] .text:004C4FE2 push esi .text:004C4FE3 mov eax, edx .text:004C4FE5 push edi .text:004C4FE6 mov edi, [esp+70h+arg_4] .text:004C4FEA lea esi, [eax+2] .text:004C4FED lea ecx, [ecx+0] .text:004C4FF0 .text:004C4FF0 loc_4C4FF0: ; CODE XREF: sub_4C4FD0+29j .text:004C4FF0 mov cx, [eax] .text:004C4FF3 add eax, 2 .text:004C4FF6 test cx, cx .text:004C4FF9 jnz short loc_4C4FF0 .text:004C4FFB push 0 ; lpUsedDefaultChar .text:004C4FFD push 0 ; lpDefaultChar .text:004C4FFF push 63h ; cchMultiByte .text:004C5001 sub eax, esi .text:004C5003 lea ecx, [esp+7Ch+name] .text:004C5007 push ecx ; lpMultiByteStr .text:004C5008 sar eax, 1 .text:004C500A push eax ; cchWideChar .text:004C500B push edx ; lpWideCharStr .text:004C500C push 0 ; dwFlags .text:004C500E push 0 ; CodePage .text:004C5010 call ds:WideCharToMultiByte .text:004C5016 lea edx, [esp+70h+name] .text:004C501A push edx ; name .text:004C501B mov [esp+eax+74h+name], 0 .text:004C5020 call ds:gethostbyname .text:004C5026 test eax, eax .text:004C5028 jnz short loc_4C503D .text:004C502A pop edi .text:004C502B xor al, al .text:004C502D pop esi .text:004C502E mov ecx, [esp+68h+var_4] .text:004C5032 xor ecx, esp .text:004C5034 call sub_516161 .text:004C5039 add esp, 68h .text:004C503C retn .text:004C503D ; --------------------------------------------------------------------------- .text:004C503D .text:004C503D loc_4C503D: ; CODE XREF: sub_4C4FD0+58j .text:004C503D mov eax, [eax+0Ch] .text:004C5040 mov ecx, [eax] .text:004C5042 push 4 .text:004C5044 push ecx .text:004C5045 push edi .text:004C5046 call sub_47F3D0 .text:004C504B mov ecx, eax .text:004C504D call sub_47F5C0 .text:004C5052 mov ecx, [esp+70h+var_4] .text:004C5056 pop edi .text:004C5057 pop esi .text:004C5058 xor ecx, esp .text:004C505A mov al, 1 .text:004C505C call sub_516161 .text:004C5061 add esp, 68h .text:004C5064 retn .text:004C5064 sub_4C4FD0 endp