Function at 0x401760
Capabilities:
Print debug messages

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x30]
push ebx
push ebp
mov ebp, dword [esp + 0x34]
push esi
mov dword [esp + 0x30], eax
mov al, byte [ebp]
push edi
mov edi, ecx
mov dword [esp + 0x20], 0
test al, al
mov dword [esp + 0x30], edi
je 0x401d0b
mov edi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov ebx, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
mov esi, dword [sym.imp.user32.dll_CharNextA]
jmp 0x4017b2
mov esi, dword [sym.imp.user32.dll_CharNextA]
mov edi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov ebx, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
cmp byte [ebp], 0x25
jne 0x401ce5
push ebp
call esi
mov ebp, eax
mov al, byte [ebp]
cmp al, 0x25
je 0x401ce5
xor esi, esi
test al, al
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], esi
je 0x401831
cmp al, 0x23
jne 0x4017e5
add dword [esp + 0x20], 2
jmp 0x401809
cmp al, 0x2a
jne 0x4017f9
mov eax, dword [esp + 0x40]
add eax, 4
mov dword [esp + 0x40], eax
mov esi, dword [eax - 4]
jmp 0x401809
cmp al, 0x2d
je 0x401809
cmp al, 0x2b
je 0x401809
cmp al, 0x30
je 0x401809
cmp al, 0x20
jne 0x401819
push ebp
call dword [sym.imp.user32.dll_CharNextA]
mov ebp, eax
mov al, byte [ebp]
test al, al
jne 0x4017da
test esi, esi
mov dword [esp + 0x24], esi
jne 0x40194d
mov edi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov ebx, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
mov cl, byte [ebp]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x17]
push 1
push eax
push 1
mov esi, ebp
mov byte [esp + 0x23], cl
call ebx
push eax
call edi
mov cl, byte [esp + 0x14]
and cl, 8
cmp cl, 8
jne 0x401880
mov dl, byte [esi + 1]
lea eax, [esp + 0x14]
inc esi
push eax
lea ecx, [esp + 0x17]
push 1
push ecx
push 1
mov byte [esp + 0x23], dl
call ebx
push eax
call edi
mov dl, byte [esp + 0x14]
and dl, 8
cmp dl, 8
je 0x401859
xor ebx, ebx
mov bl, byte [esi]
inc esi
cmp ebx, 0x2d
mov dword [esp + 0x28], ebx
je 0x401893
cmp ebx, 0x2b
jne 0x401898
xor ebx, ebx
mov bl, byte [esi]
inc esi
lea eax, [esp + 0x16]
lea ecx, [esp + 0x13]
push eax
push 1
push ecx
push 1
xor edi, edi
mov byte [esp + 0x23], bl
call dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov dl, byte [esp + 0x16]
and dl, 4
cmp dl, 4
jne 0x4018fa
lea eax, [edi + edi*4]
lea ecx, [esp + 0x16]
push ecx
lea edx, [esp + 0x17]
lea edi, [ebx + eax*2 - 0x30]
xor ebx, ebx
mov bl, byte [esi]
push 1
push edx
push 1
inc esi
mov byte [esp + 0x23], bl
call dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov al, byte [esp + 0x16]
and al, 4
cmp al, 4
je 0x4018c5
cmp dword [esp + 0x28], 0x2d
jne 0x401903
neg edi
mov al, byte [ebp]
mov dword [esp + 0x24], edi
test al, al
je 0x40194d
mov ebx, dword [sym.imp.user32.dll_CharNextA]
mov esi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov edi, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x13]
push ecx
push 1
push edx
push 1
mov byte [esp + 0x23], al
call edi
push eax
call esi
mov al, byte [esp + 0x1c]
and al, 4
cmp al, 4
jne 0x40194d
push ebp
call ebx
mov ebp, eax
mov al, byte [ebp]
test al, al
jne 0x401920
mov al, byte [ebp]
xor ebx, ebx
cmp al, 0x2e
jne 0x401ab1
mov esi, dword [sym.imp.user32.dll_CharNextA]
push ebp
call esi
mov ebp, eax
mov al, byte [ebp]
cmp al, 0x2a
jne 0x401988
mov eax, dword [esp + 0x40]
push ebp
add eax, 4
mov dword [esp + 0x44], eax
mov ecx, dword [eax - 4]
mov dword [esp + 0x2c], ecx
call esi
mov ebp, eax
jmp 0x401aad
mov ebx, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
lea edx, [esp + 0x18]
mov byte [esp + 0x13], al
push edx
lea eax, [esp + 0x17]
push 1
push eax
push 1
mov esi, ebp
call ebx
mov edi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
push eax
call edi
mov cl, byte [esp + 0x18]
and cl, 8
cmp cl, 8
jne 0x4019e0
mov dl, byte [esi + 1]
lea eax, [esp + 0x18]
inc esi
push eax
lea ecx, [esp + 0x17]
push 1
push ecx
push 1
mov byte [esp + 0x23], dl
call ebx
push eax
call edi
mov dl, byte [esp + 0x18]
and dl, 8
cmp dl, 8
je 0x4019b9
xor ebx, ebx
mov bl, byte [esi]
inc esi
cmp ebx, 0x2d
mov dword [esp + 0x28], ebx
je 0x4019f3
cmp ebx, 0x2b
jne 0x4019f8
xor ebx, ebx
mov bl, byte [esi]
inc esi
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x13]
push eax
push 1
push ecx
push 1
xor edi, edi
mov byte [esp + 0x23], bl
call dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov dl, byte [esp + 0x1a]
and dl, 4
cmp dl, 4
jne 0x401a5a
lea eax, [edi + edi*4]
lea ecx, [esp + 0x1a]
push ecx
lea edx, [esp + 0x17]
lea edi, [ebx + eax*2 - 0x30]
xor ebx, ebx
mov bl, byte [esi]
push 1
push edx
push 1
inc esi
mov byte [esp + 0x23], bl
call dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov al, byte [esp + 0x1a]
and al, 4
cmp al, 4
je 0x401a25
cmp dword [esp + 0x28], 0x2d
jne 0x401a63
neg edi
mov al, byte [ebp]
mov dword [esp + 0x28], edi
test al, al
je 0x401aad
mov edi, dword [sym.imp.user32.dll_CharNextA]
mov esi, dword [sym.imp.KERNEL32.DLL_GetStringTypeExA]
mov ebx, dword [sym.imp.KERNEL32.DLL_GetThreadLocale]
lea ecx, [esp + 0x1e]
lea edx, [esp + 0x13]
push ecx
push 1
push edx
push 1
mov byte [esp + 0x23], al
call ebx
push eax
call esi
mov al, byte [esp + 0x1e]
and al, 4
cmp al, 4
jne 0x401aad
push ebp
call edi
mov ebp, eax
mov al, byte [ebp]
test al, al
jne 0x401a80
mov ebx, dword [esp + 0x28]
mov al, byte [ebp]
xor edi, edi
cmp al, 0x49
jne 0x401ad0
cmp byte [ebp + 1], 0x36
jne 0x401ad0
cmp byte [ebp + 2], 0x34
jne 0x401ad0
add ebp, 3
mov edi, 0x40000
jmp case.0x401ae3.73
movsx eax, al
add eax, 0xffffffba
cmp eax, 0x26
ja case.0x401ae3.73
xor ecx, ecx
mov cl, byte [eax + 0x401e84]
jmp dword [ecx*4 + 0x401e74]
mov edi, 0x10000
jmp case.0x401ae3.70
mov edi, 0x20000
push ebp
call dword [sym.imp.user32.dll_CharNextA]
mov ebp, eax
movsx eax, byte [ebp]
or eax, edi
cmp eax, 0x10063
jg 0x401bc9
je 0x401c3c
cmp eax, 0x73
jg 0x401bb8
je 0x401b93
cmp eax, 0x43
je 0x401c3c
cmp eax, 0x53
je 0x401b73
cmp eax, 0x63
je 0x401c3c
mov esi, dword [esp + 0x2c]
movsx eax, byte [ebp]
add eax, 0xffffffb9
cmp eax, 0x31
ja case.0x401b54.75
xor edx, edx
mov dl, byte [eax + 0x401ec0]
jmp dword [edx*4 + 0x401eac]
mov eax, dword [esp + 0x40]
test edi, 0x40000
je 0x401c76
add eax, 8
jmp 0x401c79
mov eax, dword [esp + 0x40]
add eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [eax - 4]
test eax, eax
jne 0x401c25
mov esi, 6
jmp 0x401c56
mov eax, dword [esp + 0x40]
add eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [eax - 4]
test eax, eax
jne 0x401baf
mov esi, 6
jmp 0x401c56
push eax
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
jmp 0x401c2e
sub eax, 0x10043
je 0x401c3c
sub eax, 0x10
je 0x401be3
jmp 0x401b38
cmp eax, 0x20053
jg 0x401bfc
je 0x401c0c
cmp eax, 0x10073
je 0x401be3
cmp eax, 0x20043
jmp 0x401b32
mov eax, dword [esp + 0x40]
add eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [eax - 4]
test eax, eax
jne 0x401baf
mov esi, 6
jmp 0x401c56
sub eax, 0x20063
je 0x401c3c
sub eax, 0x10
jne 0x401b38
mov eax, dword [esp + 0x40]
add eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [eax - 4]
test eax, eax
jne 0x401c25
mov esi, 6
jmp 0x401c56
push eax
call fcn.00434c03
add esp, 4
mov esi, eax
cmp esi, 1
jge 0x401c4e
mov esi, 1
jmp 0x401c56
mov eax, dword [esp + 0x40]
mov esi, 2
add eax, 4
mov dword [esp + 0x40], eax
jmp 0x401c56
test esi, esi
je 0x401b3c
mov eax, dword [esp + 0x24]
cmp esi, eax
jg 0x401c60
mov esi, eax
test ebx, ebx
je case.0x401b54.75
cmp esi, ebx
jl case.0x401b54.75
mov eax, dword [esp + 0x20]
mov esi, ebx
add eax, esi
mov dword [esp + 0x20], eax
jmp 0x401cf4
add eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
mov esi, 0x20
add eax, ebx
cmp eax, esi
jl case.0x401b54.75
mov esi, eax
mov eax, dword [esp + 0x20]
add eax, esi
mov dword [esp + 0x20], eax
jmp 0x401cf4
push 0x448148
call dword [sym.imp.KERNEL32.DLL_OutputDebugStringA]
call dword [sym.imp.KERNEL32.DLL_DebugBreak]
add dword [esp + 0x20], esi
jmp 0x401cf4
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
mov esi, 0x20
add edx, 4
lea eax, [ebx + ecx]
mov dword [esp + 0x40], edx
cmp eax, esi
jl case.0x401b54.75
mov esi, eax
mov eax, dword [esp + 0x20]
add eax, esi
mov dword [esp + 0x20], eax
jmp 0x401cf4
add dword [esp + 0x40], 4
add dword [esp + 0x20], esi
jmp 0x401cf4
push ebp
call esi
mov ecx, dword [esp + 0x20]
sub eax, ebp
add ecx, eax
mov dword [esp + 0x20], ecx
push ebp
call dword [sym.imp.user32.dll_CharNextA]
mov ebp, eax
cmp byte [ebp], 0
jne 0x4017a0
mov edi, dword [esp + 0x30]
mov eax, dword [edi]
mov ecx, dword [esp + 0x20]
mov esi, ecx
mov edx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
cmp edx, 1
jg 0x401d27
cmp ecx, dword [eax - 4]
jle 0x401da0
mov edi, dword [esp + 0x30]
mov ebp, dword [eax - 8]
cmp ecx, ebp
jge 0x401d30
mov esi, ebp
test esi, esi
jne 0x401d3e
mov edx, dword [0x448104]
mov dword [edi], edx
jmp 0x401d64
lea eax, [esi + 0xd]
push eax
call fcn.00434bf5
add esp, 4
test eax, eax
je 0x401daa
mov dword [eax], 1
mov byte [eax + esi + 0xc], 0
mov dword [eax + 4], esi
mov dword [eax + 8], esi
add eax, 0xc
mov dword [edi], eax
mov eax, dword [esp + 0x30]
lea ecx, [ebp + 1]
mov edx, ecx
lea esi, [ebx + 0xc]
mov edi, dword [eax]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [eax]
mov dword [eax - 8], ebp
mov eax, dword [0x448108]
cmp ebx, eax
je 0x401da0
push ebx
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x401da0
push ebx
call fcn.0043440c
add esp, 4
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx]
test eax, eax
jne 0x401db6
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x28
ret 8
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
push ecx
push edx
push eax
call dword [sym.imp.user32.dll_wvsprintfA]
mov eax, dword [ebx]
mov ecx, dword [eax - 0xc]
lea edi, [eax - 0xc]
cmp ecx, 1
jle 0x401e50
mov ecx, dword [0x448108]
add eax, 0xfffffff4
cmp eax, ecx
je 0x401e02
push edi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x401dfa
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.0043440c
add esp, 4
mov ecx, dword [0x448104]
mov dword [ebx], ecx
mov esi, dword [edi + 4]
test esi, esi
jne 0x401e13
mov edx, dword [0x448104]
mov dword [ebx], edx
jmp 0x401e39
lea eax, [esi + 0xd]
push eax
call fcn.00434bf5
add esp, 4
test eax, eax
je 0x401e50
mov dword [eax], 1
mov byte [eax + esi + 0xc], 0
mov dword [eax + 4], esi
mov dword [eax + 8], esi
add eax, 0xc
mov dword [ebx], eax
mov ecx, dword [edi + 4]
lea esi, [edi + 0xc]
mov edi, dword [ebx]
inc ecx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
mov ecx, dword [ebx]
pop edi
pop esi
pop ebp
mov dword [ecx - 8], eax
mov edx, dword [ebx]
pop ebx
mov byte [eax + edx], 0
mov eax, 1
add esp, 0x28
ret 8