Function at 0x402f90
Capabilities:
Print debug messages

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
mov esi, dword [esp + 0x28]
push edi
mov edi, dword [esp + 0x30]
mov al, byte [esi]
mov dword [esp + 0x20], ecx
test al, al
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], 0
je 0x4032c7
mov ebx, dword [sym.imp.USER32.dll_CharNextA]
cmp byte [esi], 0x25
jne 0x4032ae
push esi
call ebx
mov esi, eax
mov al, byte [esi]
cmp al, 0x25
je 0x4032ae
xor ebp, ebp
test al, al
mov dword [esp + 0x18], ebp
je 0x40301c
cmp al, 0x23
jne 0x402fec
add dword [esp + 0x14], 2
jmp 0x40300b
cmp al, 0x2a
jne 0x402ffb
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x18], eax
jmp 0x40300b
cmp al, 0x2d
je 0x40300b
cmp al, 0x2b
je 0x40300b
cmp al, 0x30
je 0x40300b
cmp al, 0x20
jne 0x403016
push esi
call ebx
mov esi, eax
mov al, byte [esi]
test al, al
jne 0x402fe1
cmp dword [esp + 0x18], ebp
jne 0x403063
push esi
call sub.MSVCRT.dll_atoi
mov dword [esp + 0x1c], eax
mov al, byte [esi]
add esp, 4
test al, al
je 0x403063
lea ecx, [esp + 0x10]
lea edx, [esp + 0x30]
push ecx
push 1
push edx
push 1
mov byte [esp + 0x40], al
call dword [sym.imp.KERNEL32.dll_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.dll_GetStringTypeExA]
mov al, byte [esp + 0x10]
and al, 4
cmp al, 4
jne 0x403063
push esi
call ebx
mov esi, eax
mov al, byte [esi]
test al, al
jne 0x40302f
mov al, byte [esi]
mov dword [esp + 0x1c], 0
cmp al, 0x2e
jne 0x4030d4
push esi
call ebx
mov esi, eax
cmp byte [esi], 0x2a
jne 0x40308b
mov ecx, dword [edi]
add edi, 4
push esi
mov dword [esp + 0x20], ecx
call ebx
mov esi, eax
jmp 0x4030d4
push esi
call sub.MSVCRT.dll_atoi
mov dword [esp + 0x20], eax
mov al, byte [esi]
add esp, 4
test al, al
je 0x4030d4
lea edx, [esp + 0x12]
mov byte [esp + 0x30], al
push edx
lea eax, [esp + 0x34]
push 1
push eax
push 1
call dword [sym.imp.KERNEL32.dll_GetThreadLocale]
push eax
call dword [sym.imp.KERNEL32.dll_GetStringTypeExA]
mov cl, byte [esp + 0x12]
and cl, 4
cmp cl, 4
jne 0x4030d4
push esi
call ebx
mov esi, eax
mov al, byte [esi]
test al, al
jne 0x40309e
mov al, byte [esi]
xor ebx, ebx
cmp al, 0x49
jne 0x4030f2
cmp byte [esi + 1], 0x36
jne 0x4030f2
cmp byte [esi + 2], 0x34
jne 0x4030f2
add esi, 3
mov ebx, 0x40000
jmp case.0x403105.73
movsx eax, al
add eax, 0xffffffba
cmp eax, 0x26
ja case.0x403105.73
xor edx, edx
mov dl, byte [eax + 0x403438]
jmp dword [edx*4 + 0x403428]
mov ebx, 0x10000
jmp case.0x403105.70
mov ebx, 0x20000
push esi
call dword [sym.imp.USER32.dll_CharNextA]
mov esi, eax
movsx eax, byte [esi]
or eax, ebx
cmp eax, 0x10063
jg 0x4031c4
je 0x403225
cmp eax, 0x73
jg 0x4031b6
je 0x40319a
cmp eax, 0x43
je 0x403225
cmp eax, 0x53
je 0x403187
cmp eax, 0x63
je 0x403225
movsx eax, byte [esi]
add eax, 0xffffffb9
cmp eax, 0x31
ja case.0x40316c.75
xor ecx, ecx
mov cl, byte [eax + 0x403474]
jmp dword [ecx*4 + 0x403460]
test ebx, 0x40000
je 0x403251
add edi, 8
jmp 0x403254
mov eax, dword [edi]
add edi, 4
test eax, eax
jne 0x40320e
mov ebp, 6
jmp 0x403237
mov eax, dword [edi]
add edi, 4
test eax, eax
jne 0x4031ad
mov ebp, 6
jmp 0x403237
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
jmp 0x403217
sub eax, 0x10043
je 0x403225
sub eax, 0x10
je 0x4031de
jmp 0x403155
cmp eax, 0x20053
jg 0x4031ee
je 0x4031fe
cmp eax, 0x10073
je 0x4031de
cmp eax, 0x20043
jmp 0x40314f
mov eax, dword [edi]
add edi, 4
test eax, eax
jne 0x4031ad
mov ebp, 6
jmp 0x403237
sub eax, 0x20063
je 0x403225
sub eax, 0x10
jne 0x403155
mov eax, dword [edi]
add edi, 4
test eax, eax
jne 0x40320e
mov ebp, 6
jmp 0x403237
push eax
call sub.MSVCRT.dll_wcslen
add esp, 4
mov ebp, eax
cmp ebp, 1
jge 0x40322f
mov ebp, 1
jmp 0x403237
mov ebp, 2
add edi, 4
jmp 0x403237
test ebp, ebp
je 0x403155
mov eax, dword [esp + 0x18]
cmp ebp, eax
jg 0x403241
mov ebp, eax
mov eax, dword [esp + 0x1c]
test eax, eax
je case.0x40316c.75
cmp ebp, eax
jl case.0x40316c.75
mov ebp, eax
jmp case.0x40316c.75
add edi, 4
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ebp, 0x20
add eax, edx
cmp eax, ebp
jl case.0x40316c.75
mov ebp, eax
jmp case.0x40316c.75
push str.Floating_point____e____f____g__and___G__is_not_supported_by_the_WTL::CString_class.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
call dword [sym.imp.KERNEL32.dll_DebugBreak]
jmp case.0x40316c.75
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebp, 0x20
add edi, 4
lea eax, [ecx + edx]
cmp eax, ebp
jl case.0x40316c.75
mov ebp, eax
jmp case.0x40316c.75
add edi, 4
mov eax, dword [esp + 0x14]
mov ebx, dword [sym.imp.USER32.dll_CharNextA]
add eax, ebp
mov dword [esp + 0x14], eax
jmp 0x4032b9
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add dword [esp + 0x14], eax
push esi
call ebx
mov esi, eax
cmp byte [esi], 0
jne 0x402fbf
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
lea ebp, [eax - 0xc]
cmp ecx, 1
jg 0x4032e5
cmp esi, dword [eax - 4]
jle 0x40336a
mov ebx, dword [eax - 8]
mov eax, dword [esp + 0x14]
cmp eax, ebx
jge 0x4032f2
mov esi, ebx
test esi, esi
jne 0x403304
mov edx, dword [esp + 0x20]
mov ecx, dword [0x418010]
mov dword [edx], ecx
jmp 0x40332e
lea eax, [esi + 0xd]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x40336a
mov ecx, dword [esp + 0x20]
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 [ecx], eax
mov eax, dword [esp + 0x20]
lea ecx, [ebx + 1]
mov edx, ecx
lea esi, [ebp + 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], ebx
mov eax, dword [0x418014]
cmp ebp, eax
je 0x40336a
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40336a
push ebp
call fcn.00415cb0
add esp, 4
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
push ecx
mov eax, dword [ebx]
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 0x403407
mov ecx, dword [0x418014]
add eax, 0xfffffff4
cmp eax, ecx
je 0x4033bc
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x4033b4
mov ecx, dword [ebx]
sub ecx, 0xc
push ecx
call fcn.00415cb0
add esp, 4
mov edx, dword [0x418010]
mov dword [ebx], edx
mov esi, dword [edi + 4]
test esi, esi
jne 0x4033ca
mov eax, dword [0x418010]
jmp 0x4033ee
lea ecx, [esi + 0xd]
push ecx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x403407
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]
inc ecx
lea esi, [edi + 0xc]
mov edx, ecx
mov edi, 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 [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 [edx + eax], 0
add esp, 0x18
ret 8