Function at 0x412f00
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [esp + 0x70]
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x20], eax
test eax, eax
jle 0x412f8a
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x28], 0
xor esi, esi
sub eax, 1
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x7c]
sub eax, 2
and eax, 0xfffffffe
mov dword [esp + 0x30], eax
mov eax, ebp
mov ebp, ecx
mov edi, eax
movzx eax, byte [edi + esi + 4]
lea ebx, [esi + 1]
cmp al, 0x24
je 0x412f98
mov edx, 1
mov ecx, ebp
mov byte [esp + 0x24], al
call sym._prepareAdd_8
movzx eax, byte [esp + 0x24]
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
mov byte [ecx + edx + 4], al
mov eax, dword [ebp]
add eax, 1
jo 0x413b26
mov edx, dword [ebp + 4]
mov dword [ebp], eax
mov byte [edx + eax + 4], 0
mov esi, ebx
cmp esi, dword [esp + 0x20]
jl 0x412f40
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
cmp ebx, dword [esp + 0x20]
jge 0x412f4c
movzx edx, byte [edi + ebx + 4]
cmp dl, 0x5a
ja 0x413138
cmp dl, 0x22
jbe case.0x412fc3.2
lea eax, [edx - 0x23]
cmp al, 0x37
ja case.0x412fc3.2
movzx eax, al
jmp dword [eax*4 + 0x434a30]
cmp dl, 0x5f
je case.0x412fc3.30
sub edx, 0x61
cmp dl, 0x19
ja case.0x412fc3.2
mov eax, ebx
jmp 0x412fea
test edx, edx
js 0x413550
mov eax, edx
movzx edx, byte [edi + eax + 4]
mov ecx, edx
and ecx, 0xffffffdf
sub ecx, 0x41
cmp cl, 0x19
jbe 0x41301d
mov ecx, edx
shr cl, 7
cmp dl, 0x5f
mov byte [esp + 0x24], cl
sete cl
or cl, byte [esp + 0x24]
jne 0x41301d
sub edx, 0x30
cmp dl, 9
ja 0x413b3a
lea edx, [eax + 1]
cmp edx, dword [esp + 0x20]
jne 0x412fe0
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], edi
call sym._substr__system_u8785_16
sub esp, 0x10
mov dword [esp], 0x4331ac
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], eax
call sym.___emutls_get_address
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
test edx, edx
jle 0x4136cd
mov ebx, dword [esp + 0x7c]
test ebx, ebx
jle 0x413a57
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x44], esi
xor ebx, ebx
mov dword [esp + 0x48], ebp
mov esi, dword [esp + 0x40]
and eax, 0xfffffffe
mov dword [esp + 0x40], edi
mov ebp, ecx
mov dword [esp + 0x3c], eax
jmp 0x4130c6
test eax, eax
je 0x413820
lea eax, [ebx + 2]
mov edx, eax
cmp dword [esp + 0x30], ebx
je 0x4138b8
add ebp, 0x10
cmp dword [esp + 0x3c], ebx
je 0x4138cd
mov ebx, eax
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp], esi
mov edi, ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
call sym._nsuCmpIgnoreStyle_16
sub esp, 0x10
mov ecx, dword [esp + 0x24]
cmp byte [ecx], 0
je 0x4130a0
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x44], ebx
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x413578
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
mov dword [esp + 0x34], eax
test eax, 0x40000000
jne 0x413578
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call sym._deallocShared
jmp 0x413578
cmp dl, 0x7b
je 0x413388
jbe 0x412fca
add dl, 0x80
jns case.0x412fc3.30
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
mov dword [esp], 0x4331ac
call sym.___emutls_get_address
cmp byte [eax], 0
je 0x412f84
jmp 0x412f8a
add esi, 2
cmp dl, 0x2d
cmovne esi, ebx
xor eax, eax
jmp 0x4131ba
movzx ecx, byte [edi + esi + 4]
lea ebx, [ecx - 0x30]
cmp bl, 9
ja 0x4131c0
imul eax, eax, 0xa
jo 0x4132fb
add eax, ecx
jo 0x4132fb
sub eax, 0x30
jo 0x4132fb
add esi, 1
cmp esi, dword [esp + 0x20]
jl 0x413190
cmp dl, 0x2d
je 0x41380c
sub eax, 1
jo 0x4132fb
test eax, eax
js 0x413710
cmp eax, dword [esp + 0x7c]
jge 0x41374c
mov ebx, dword [esp + 0x78]
mov ecx, ebp
lea eax, [ebx + eax*8]
mov edx, dword [eax]
mov dword [esp + 0x24], eax
call sym._prepareAdd_8
mov eax, dword [esp + 0x24]
mov ebx, dword [eax]
test ebx, ebx
jle 0x412f84
mov eax, dword [eax + 4]
mov edx, ebx
add edx, 1
mov dword [esp + 0x24], eax
jo 0x413802
test edx, edx
js 0x41390a
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
mov dword [esp + 8], edx
lea ecx, [ecx + eax + 4]
mov eax, dword [esp + 0x24]
mov dword [esp], ecx
add eax, 4
mov dword [esp + 4], eax
call sym._memcpy
add ebx, dword [ebp]
jo 0x413802
mov dword [ebp], ebx
jmp 0x412f84
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x7c]
jge 0x413500
test eax, eax
js 0x413525
mov ebx, dword [esp + 0x78]
mov ecx, ebp
lea eax, [ebx + eax*8]
mov edx, dword [eax]
mov dword [esp + 0x24], eax
call sym._prepareAdd_8
mov eax, dword [esp + 0x24]
mov ebx, dword [eax]
test ebx, ebx
jle 0x4132d3
mov eax, dword [eax + 4]
mov edx, ebx
add edx, 1
mov dword [esp + 0x24], eax
jo 0x413543
test edx, edx
js 0x413590
mov eax, dword [ebp + 4]
mov ecx, dword [ebp]
mov dword [esp + 8], edx
lea ecx, [eax + ecx + 4]
mov eax, dword [esp + 0x24]
mov dword [esp], ecx
add eax, 4
mov dword [esp + 4], eax
call sym._memcpy
add ebx, dword [ebp]
jo 0x413543
mov dword [ebp], ebx
mov eax, esi
xor edx, edx
add eax, 2
js 0x413b1c
cmp eax, esi
jb 0x413b1c
mov esi, eax
test edx, edx
jne 0x4132fb
mov eax, dword [esp + 0x28]
add eax, 1
mov dword [esp + 0x28], eax
jno 0x413359
call sym._raiseOverflow
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
mov edx, 1
mov ecx, ebp
call sym._prepareAdd_8
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov byte [edx + eax + 4], 0x24
mov eax, dword [ebp]
add eax, 1
jo 0x413b12
mov edx, dword [ebp + 4]
mov dword [ebp], eax
mov byte [edx + eax + 4], 0
mov eax, esi
xor edx, edx
add eax, 2
js 0x413afe
cmp eax, esi
jb 0x413afe
mov esi, eax
test edx, edx
jne 0x4132fb
cmp esi, dword [esp + 0x20]
jge 0x412f8a
test esi, esi
jns 0x412f40
mov eax, dword [esp + 0x20]
mov dword [esp], esi
sub eax, 1
mov dword [esp + 4], eax
call sym._raiseIndexError2
jmp 0x412f8a
mov ebx, esi
xor eax, eax
add ebx, 2
mov dword [esp + 0x34], ebx
js 0x413b08
cmp ebx, esi
jb 0x413b08
mov dword [esp + 0x38], eax
test eax, eax
jne 0x4132fb
mov eax, dword [esp + 0x34]
test eax, eax
js 0x413778
mov esi, dword [esp + 0x20]
cmp eax, esi
jge 0x413778
mov esi, eax
movzx eax, byte [edi + eax + 4]
xor ebx, ebx
cmp al, 0x2d
mov byte [esp + 0x3c], al
sete bl
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x24], eax
add ebx, esi
jmp 0x413430
movzx edx, byte [edi + ebx + 4]
test dl, dl
je 0x413436
cmp dl, 0x7d
je 0x413436
lea esi, [edx - 0x30]
mov eax, esi
cmp al, 9
ja 0x4134f0
imul eax, dword [esp + 0x24], 0xa
jo 0x4132fb
add eax, edx
jo 0x4132fb
sub eax, 0x30
mov dword [esp + 0x24], eax
jo 0x4132fb
test ecx, ecx
mov eax, 1
cmove ecx, eax
add ebx, 1
cmp ebx, dword [esp + 0x20]
jl 0x4133e8
mov eax, dword [esp + 0x24]
cmp ecx, 1
jne 0x4135c9
cmp byte [esp + 0x3c], 0x2d
je 0x41395e
sub eax, 1
mov esi, eax
jo 0x4132fb
test esi, esi
js 0x413712
cmp esi, dword [esp + 0x7c]
jge 0x41374e
mov eax, dword [esp + 0x78]
mov ecx, ebp
lea esi, [eax + esi*8]
mov edx, dword [esi]
call sym._prepareAdd_8
mov edx, dword [esi]
test edx, edx
jle 0x4134c8
mov ecx, edx
mov esi, dword [esi + 4]
add ecx, 1
jo 0x413954
test ecx, ecx
js 0x41399d
mov eax, dword [ebp]
mov dword [esp + 0x24], edx
add esi, 4
mov edx, dword [ebp + 4]
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
lea eax, [edx + eax + 4]
mov dword [esp], eax
call sym._memcpy
mov eax, dword [esp + 0x24]
add eax, dword [ebp]
jo 0x413954
mov dword [ebp], eax
mov esi, ebx
xor eax, eax
add esi, 1
js 0x413b30
cmp esi, ebx
jb 0x413b30
test eax, eax
je 0x413359
jmp 0x4132fb
mov ecx, 0xffffffff
jmp 0x41342d
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
mov dword [esp], 0x4331ac
call sym.___emutls_get_address
cmp byte [eax], 0
jne 0x412f8a
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call sym._raiseIndexError2
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
call sym._raiseOverflow
jmp 0x4132d3
mov eax, dword [esp + 0x20]
mov dword [esp], edx
sub eax, 1
mov dword [esp + 4], eax
call sym._raiseIndexError2
mov dword [esp], 0x4331ac
call sym.___emutls_get_address
mov dword [esp + 0x24], eax
lea esi, [esi]
nop
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
je 0x413359
jmp 0x412f8a
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0x80000000
mov dword [esp + 4], 0xffffffff
call sym._raiseRangeErrorI
jmp 0x4132d3
lea eax, [ebx - 1]
mov dword [esp + 4], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call sym._substr__system_u8785_16
sub esp, 0x10
mov dword [esp], 0x4331ac
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], edx
call sym.___emutls_get_address
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
test esi, esi
jle 0x413ab3
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jle 0x4137a8
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x40], ebx
xor esi, esi
mov dword [esp + 0x48], ebp
mov ebx, dword [esp + 0x3c]
and eax, 0xfffffffe
mov dword [esp + 0x3c], edi
mov ebp, edx
mov dword [esp + 0x38], eax
jmp 0x413666
test eax, eax
je 0x413a38
lea eax, [esi + 2]
mov ecx, eax
cmp dword [esp + 0x30], esi
je 0x413978
add ebp, 0x10
cmp dword [esp + 0x38], esi
je 0x413794
mov esi, eax
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp], ebx
mov edi, esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
call sym._nsuCmpIgnoreStyle_16
sub esp, 0x10
mov ecx, dword [esp + 0x24]
cmp byte [ecx], 0
je 0x413640
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x4c], esi
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4136bb
mov eax, dword [eax]
mov dword [esp + 0x38], eax
test eax, 0x40000000
je 0x413943
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
je 0x4134c8
jmp 0x412f8a
cmp byte [eax], 0
jne 0x413102
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
jne 0x413a5e
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
test edx, edx
jne 0x41310e
jmp 0x413359
mov esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
mov dword [esp], 0x4331ac
call sym.___emutls_get_address
cmp byte [eax], 0
jne 0x412f8a
mov eax, dword [esp + 0x2c]
mov dword [esp], esi
mov dword [esp + 4], eax
call sym._raiseIndexError2
jmp 0x412f8a
mov esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
mov dword [esp], 0x4331ac
call sym.___emutls_get_address
cmp byte [eax], 0
je 0x413737
jmp 0x412f8a
mov eax, dword [esp + 0x20]
sub eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call sym._raiseIndexError2
jmp 0x412f8a
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call sym._raiseIndexError2
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
jne 0x4136a2
cmp dword [esp + 0x4c], 0xffffffff
je 0x413988
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x4c]
cmp esi, eax
jle 0x413988
add eax, 1
cmp dword [esp + 0x7c], eax
jg 0x4139d6
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._raiseIndexError2
jmp 0x4136a2
call sym._raiseOverflow
jmp 0x412f84
mov edx, dword [esp + 0x7c]
sub edx, eax
mov eax, edx
jno 0x4131d2
jmp 0x4132fb
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x44], ebx
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
cmp ebx, eax
jle 0x4136d6
add eax, 1
cmp dword [esp + 0x7c], eax
jg 0x41385a
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._raiseIndexError2
jmp 0x413102
mov esi, dword [esp + 0x78]
mov ecx, ebp
lea ebx, [esi + eax*8]
mov edx, dword [ebx]
call sym._prepareAdd_8
mov esi, dword [ebx]
test esi, esi
jle 0x4138af
mov ecx, esi
mov ebx, dword [ebx + 4]
add ecx, 1
jo 0x413a4d
test ecx, ecx
js 0x413a70
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp + 8], ecx
lea edx, [edx + eax + 4]
lea eax, [ebx + 4]
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._memcpy
add esi, dword [ebp]
jo 0x413a4d
mov dword [ebp], esi
mov esi, dword [esp + 0x34]
jmp 0x413102
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x44], ebx
mov edi, dword [esp + 0x40]
jmp 0x4136d6
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x2c]
mov dword [esp], edx
mov dword [esp + 4], eax
call sym._raiseIndexError2
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
jne 0x413102
cmp dword [esp + 0x44], 0xffffffff
jne 0x413830
jmp 0x4136d6
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0x80000000
mov dword [esp + 4], 0xffffffff
call sym._raiseRangeErrorI
jmp 0x412f84
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call sym._deallocShared
jmp 0x4136bb
call sym._raiseOverflow
jmp 0x4134c8
mov edx, dword [esp + 0x7c]
sub edx, eax
mov esi, edx
jno 0x413459
jmp 0x4132fb
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x4c], esi
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._invalidFormatString__pureZstrutils_u2568
jmp 0x4136a2
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0x80000000
mov dword [esp + 4], 0xffffffff
call sym._raiseRangeErrorI
jmp 0x4134c8
mov esi, dword [esp + 0x78]
mov ecx, ebp
lea esi, [esi + eax*8]
mov edx, dword [esi]
call sym._prepareAdd_8
mov eax, dword [esi]
mov dword [esp + 0x38], eax
test eax, eax
jle 0x4136a2
add eax, 1
mov esi, dword [esi + 4]
mov ecx, eax
jo 0x413aa9
test eax, eax
js 0x413ac5
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp + 8], ecx
lea edx, [edx + eax + 4]
lea eax, [esi + 4]
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._memcpy
mov eax, dword [esp + 0x38]
add eax, dword [ebp]
jo 0x413aa9
mov dword [ebp], eax
jmp 0x4136a2
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x4c], esi
mov edi, dword [esp + 0x3c]
jmp 0x4137d4
call sym._raiseOverflow
jmp 0x4138af
xor edx, edx
jmp 0x4138dd
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x41310e
jmp 0x412f8a
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0x80000000
mov dword [esp + 4], 0xffffffff
call sym._raiseRangeErrorI
jmp 0x4138af
call sym._raiseOverflow
jmp 0x4136a2
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
jne 0x4136a2
jmp 0x413988
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0x80000000
mov dword [esp + 4], 0xffffffff
call sym._raiseRangeErrorI
jmp 0x4136a2
mov edx, 1
jmp 0x413353
mov eax, 1
jmp 0x4133a1
call sym._raiseOverflow
jmp 0x41333e
mov edx, 1
jmp 0x4132e8
call sym._raiseOverflow
jmp 0x412f82
mov eax, 1
jmp 0x4134dd
mov dword [esp + 0x34], eax
sub eax, 1
jmp 0x41302e