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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x124
mov ecx, dword [ebp + 8]
xor eax, eax
and dword [esp + 0x38], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
xor edi, edi
mov dword [esp + 0x58], eax
test byte [ecx + 0x15], 2
mov dword [esp + 0x24], edi
je 0x413061
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x44], eax
mov byte [esp + 0xf], 1
jmp 0x413065
mov byte [esp + 0xf], al
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x20], esi
movsx eax, byte [edx]
test eax, eax
je case.default.0x413449
movsd xmm0, qword [0x51e250]
movsd qword [esp + 0xf0], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x80], xmm0
movsd xmm0, qword [0x51e090]
movsd qword [esp + 0xd0], xmm0
movsd xmm0, qword [0x51e088]
movsd qword [esp + 0xd8], xmm0
movsd xmm0, qword [0x51e0e8]
movsd qword [esp + 0xe0], xmm0
movsd xmm0, qword [0x51e1a8]
movsd qword [esp + 0xe8], xmm0
movsd xmm0, qword [0x51e170]
movsd qword [esp + 0x120], xmm0
movsd xmm0, qword [0x51e0f8]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [0x51e098]
movsd qword [esp + 0x108], xmm0
movsd xmm0, qword [0x51e150]
movsd qword [esp + 0x110], xmm0
movsd xmm0, qword [0x51e0d0]
mov dword [esp + 0x68], 0x2d
mov dword [esp + 0x78], 0x4cfb90
mov dword [esp + 0x64], 6
mov dword [esp + 0x7c], SysReAllocString
mov dword [esp + 0x50], 0xa
mov dword [esp + 0x54], 3
mov dword [esp + 0x6c], 0x15e
mov dword [esp + 0x5c], 0x64
movsd qword [esp + 0x118], xmm0
cmp eax, 0x25
je 0x4131a0
mov edi, edx
mov dword [esp + 0x24], edi
inc edx
mov al, byte [edx]
test al, al
je 0x413180
cmp al, 0x25
jne 0x413175
mov eax, edx
mov dword [esp + 0x34], edx
sub eax, edi
push eax
push edi
push ecx
call fcn.004143ac
mov edx, dword [esp + 0x40]
add esp, 0xc
cmp byte [edx], 0
je case.default.0x413449
inc edx
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
test ecx, ecx
je 0x4141d4
xor eax, eax
and dword [esp + 0x10], eax
or dword [esp + 0x2c], 0xffffffff
mov byte [esp + 0x2b], al
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov byte [esp + 0x17], al
mov byte [esp + 0x1d], al
mov byte [esp + 0xd], al
mov byte [esp + 0xe], al
mov byte [esp + 0x33], al
cmp ecx, 0x2c
jg 0x4132b7
je 0x4132ad
mov eax, ecx
sub eax, 0x20
je 0x4132a3
sub eax, 1
je 0x413299
dec eax
sub eax, 1
je 0x41328f
sub eax, 7
je 0x413220
sub eax, 1
jne 0x4133fc
mov byte [esp + 0x1d], 0x2b
jmp 0x4133c3
cmp byte [esp + 0xf], 0
je 0x413238
mov ecx, dword [esp + 0x44]
call fcn.00412f7b
mov edx, eax
mov dword [esp + 0x10], eax
jmp 0x413245
mov edx, dword [esi]
add esi, 4
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], edx
test edx, edx
jns 0x413261
mov ecx, edx
mov byte [esp + 0xd], 1
neg ecx
xor eax, eax
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x34]
inc edx
mov al, byte [edx]
movsx ecx, al
cmp al, 0x2e
je 0x413282
cmp al, 0x6c
je 0x413282
mov al, 1
mov dword [esp + 0x34], edx
mov byte [esp + 0xe], al
jmp 0x4133bf
mov al, byte [esp + 0xe]
mov edx, dword [esp + 0x34]
jmp 0x4133bf
mov byte [esp + 0x1f], 1
jmp 0x4133c3
mov byte [esp + 0x1e], 1
jmp 0x4133c3
mov byte [esp + 0x1d], 0x20
jmp 0x4133c3
mov byte [esp + 0x17], 0x2c
jmp 0x4133c3
cmp ecx, 0x2d
je 0x4133ba
cmp ecx, 0x2e
je 0x413328
cmp ecx, 0x30
je 0x41331e
jle 0x4133fc
cmp ecx, 0x39
jg 0x4133d8
lea edx, [ecx - 0x30]
jmp 0x4132eb
cmp ecx, 0x39
jg 0x4132fc
imul eax, edx, 0xa
lea edx, [ecx - 0x30]
add edx, eax
mov eax, dword [esp + 0x34]
inc eax
mov dword [esp + 0x34], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x4132de
and edx, 0x7fffffff
mov dword [esp + 0x10], edx
cmp ecx, 0x2e
je 0x413314
cmp ecx, 0x6c
jne 0x4133fc
mov edx, dword [esp + 0x34]
dec edx
jmp 0x4133c3
mov byte [esp + 0x2b], 1
jmp 0x4133c3
inc edx
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
cmp ecx, 0x2a
jne 0x413380
cmp byte [esp + 0xf], 0
je 0x41334d
mov ecx, dword [esp + 0x44]
call fcn.00412f7b
mov edx, eax
mov dword [esp + 0x2c], eax
jmp 0x41335a
mov edx, dword [esi]
add esi, 4
mov dword [esp + 0x20], esi
mov dword [esp + 0x2c], edx
test edx, edx
jns 0x413372
mov ecx, edx
or eax, 0xffffffff
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x2c], eax
mov edx, dword [esp + 0x34]
inc edx
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
jmp 0x4133b0
xor edx, edx
jmp 0x41339d
cmp ecx, 0x39
jg 0x4133a2
imul eax, edx, 0xa
lea edx, [ecx - 0x30]
add edx, eax
mov eax, dword [esp + 0x34]
inc eax
mov dword [esp + 0x34], eax
movsx ecx, byte [eax]
cmp ecx, 0x30
jge 0x413384
and edx, 0x7fffffff
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x34]
cmp ecx, 0x6c
jne 0x4133fc
jmp 0x413318
mov byte [esp + 0xd], 1
test al, al
jne 0x4133fc
inc edx
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
test ecx, ecx
je 0x4133fc
mov al, byte [esp + 0xe]
jmp 0x4131db
cmp ecx, 0x6c
jne 0x4133fc
inc edx
mov byte [esp + 0x33], 1
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
cmp ecx, 0x6c
jne 0x4133fc
inc edx
mov byte [esp + 0x33], 2
mov dword [esp + 0x34], edx
movsx ecx, byte [edx]
mov edx, dword [esp + 0x78]
xor esi, esi
mov dword [esp + 0x40], edx
mov byte [esp + 0xe], 0x11
movsx eax, byte [edx]
cmp ecx, eax
je 0x413429
add edx, dword [esp + 0x64]
inc esi
cmp edx, 0x4cfc1a
jl 0x41340b
mov ch, byte [esp + 0xe]
mov edx, dword [esp + 0x40]
jmp 0x41343d
imul edx, esi, 6
add edx, 0x4cfb90
mov dword [esp + 0x40], edx
mov ch, byte [edx + 3]
mov byte [esp + 0xe], ch
movzx eax, ch
cmp eax, 0x10
ja case.default.0x413449
jmp dword [eax*4 + 0x4141ee]
mov al, 1
mov byte [esp + 0x33], al
mov byte [esp + 0x17], 0
test byte [edx + 2], 1
je 0x4134d1
cmp byte [esp + 0xf], 0
je 0x413473
mov ecx, dword [esp + 0x44]
call fcn.00412f7b
jmp 0x4134a0
mov al, byte [esp + 0x33]
test al, al
je 0x413491
cmp al, 2
mov eax, dword [esp + 0x20]
jne 0x413495
mov edi, dword [eax]
add eax, 8
mov dword [esp + 0x20], eax
mov esi, dword [eax - 4]
jmp 0x4134a4
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov eax, dword [eax - 4]
cdq
mov edi, eax
mov esi, edx
test esi, esi
jg 0x4134cb
jl 0x4134ae
test edi, edi
jae 0x4134cb
test edi, edi
jne 0x4134be
mov eax, dword [esp + 0x7c]
cmp esi, eax
jne 0x4134be
mov esi, eax
jmp 0x4134c5
neg edi
adc esi, 0
neg esi
mov cl, byte [esp + 0x68]
jmp 0x413512
mov cl, byte [esp + 0x1d]
jmp 0x413516
cmp byte [esp + 0xf], 0
je 0x4134e7
mov ecx, dword [esp + 0x44]
call fcn.00412f7b
mov edi, eax
mov esi, edx
jmp 0x413510
mov al, byte [esp + 0x33]
test al, al
je 0x413501
cmp al, 2
mov eax, dword [esp + 0x20]
jne 0x413505
mov edi, dword [eax]
add eax, 8
mov esi, dword [eax - 4]
jmp 0x41350c
mov eax, dword [esp + 0x20]
mov edi, dword [eax]
add eax, 4
xor esi, esi
mov dword [esp + 0x20], eax
xor cl, cl
mov byte [esp + 0x1d], cl
mov eax, edi
or eax, esi
jne 0x413520
mov byte [esp + 0x1f], al
cmp byte [esp + 0x2b], 0
je 0x413543
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x10]
setne al
sub ecx, eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
cmovl eax, ecx
mov dword [esp + 0x2c], eax
jmp 0x413547
mov eax, dword [esp + 0x2c]
cmp eax, 0x25
jge 0x413560
push 0x46
pop eax
lea ecx, [esp + 0x88]
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], ecx
jmp 0x4135ab
cdq
add eax, dword [esp + 0x50]
mov ecx, edx
mov dword [esp + 0x18], eax
adc ecx, 0
cmp byte [esp + 0x17], 0
je 0x413589
mov eax, dword [esp + 0x2c]
cdq
idiv dword [esp + 0x54]
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
adc ecx, edx
push ecx
mov ecx, dword [ebp + 8]
push eax
call fcn.00412fc0
mov dword [esp + 0x60], eax
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x38], ecx
test eax, eax
je case.default.0x413449
mov eax, dword [esp + 0x18]
dec ecx
add ecx, eax
cmp byte [esp + 0xe], 0xf
mov dword [esp + 0x24], ecx
jne 0x41361a
push 0
push dword [esp + 0x54]
push esi
push edi
call fcn.004be910
mov dword [esp + 0x3c], eax
cmp eax, 4
jge 0x4135f2
push 0
push dword [esp + 0x54]
push esi
push edi
call fcn.004be8a0
push 0
push dword [esp + 0x54]
push edx
push eax
call fcn.004be910
cmp eax, 1
jne 0x4135f6
test edx, edx
jne 0x4135f6
xor ecx, ecx
jmp 0x4135fa
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
mov al, byte [ecx*2 + 0x4ccd2d]
mov byte [edx - 1], al
sub edx, 2
mov al, byte [ecx*2 + str.thstndrd]
mov ecx, edx
mov dword [esp + 0x24], edx
mov byte [edx], al
mov edx, dword [esp + 0x40]
movzx eax, byte [edx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x48], eax
movzx eax, byte [edx + 1]
cdq
mov dword [esp + 0x3c], eax
mov dword [esp + 0x60], edx
push edx
push eax
push esi
dec ecx
push edi
mov dword [esp + 0x34], ecx
call fcn.004be7d0
mov edi, eax
mov dword [esp + 0x12c], ebx
mov eax, dword [esp + 0x48]
mov esi, edx
mov edx, dword [esp + 0x60]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x24]
mov byte [ecx], al
mov eax, dword [esp + 0x3c]
test esi, esi
ja 0x413638
jb 0x413670
test edi, edi
jne 0x413638
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
mov eax, esi
mov edi, dword [esp + 0x24]
sub eax, edi
lea ecx, [edx - 1]
add ecx, eax
mov eax, dword [esp + 0x2c]
cmp ecx, eax
jge 0x4136a0
sub eax, ecx
mov ecx, dword [esp + 0x2c]
dec edi
mov byte [edi], 0x30
sub eax, 1
jne 0x413693
mov dword [esp + 0x24], edi
cmp byte [esp + 0x17], 0
je 0x4136e4
lea eax, [ecx - 1]
cdq
idiv dword [esp + 0x54]
mov esi, eax
inc edx
sub edi, esi
xor ecx, ecx
mov dword [esp + 0x24], edi
test esi, esi
jle 0x4136dc
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
sub edx, 1
jne 0x4136d9
mov al, byte [esp + 0x17]
inc ecx
mov edx, dword [esp + 0x54]
dec esi
mov byte [ecx + edi], al
inc ecx
jmp 0x4136ba
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov al, byte [esp + 0x1d]
test al, al
je 0x4136f3
dec edi
mov dword [esp + 0x24], edi
mov byte [edi], al
cmp byte [esp + 0x1f], 0
je 0x413721
mov eax, dword [esp + 0x40]
mov al, byte [eax + 5]
test al, al
je 0x413721
movzx eax, al
add eax, 0x4cb878
mov cl, byte [eax]
test cl, cl
je 0x413721
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x413713
mov dword [esp + 0x24], edi
sub esi, edi
dec esi
add esi, edx
jmp 0x414150
cmp byte [esp + 0xf], 0
je 0x413762
mov esi, dword [esp + 0x44]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x413748
movsd xmm1, qword [esp + 0x80]
jmp 0x413772
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
call fcn.00428575
mov ch, byte [esp + 0xe]
movaps xmm1, xmm0
jmp 0x413772
mov eax, dword [esp + 0x20]
add eax, 8
mov dword [esp + 0x20], eax
movsd xmm1, qword [eax - 8]
mov esi, dword [esp + 0x2c]
test esi, esi
movsd xmm2, qword [esp + 0x80]
cmovs esi, dword [esp + 0x64]
movzx eax, byte [esp + 0x1d]
comisd xmm2, xmm1
mov dword [esp + 0x2c], esi
andps xmm1, xmmword [esp + 0xf0]
movsd qword [esp + 0x48], xmm1
cmova eax, dword [esp + 0x68]
mov dword [esp + 0x3c], eax
cmp ch, 3
jne 0x4137b8
test esi, esi
jle 0x4137b8
dec esi
mov dword [esp + 0x2c], esi
mov edi, dword [esp + 0x50]
mov ecx, esi
and ecx, 0xfff
xor edx, edx
mov eax, ecx
div edi
movsd xmm3, qword [edx*8 + 0x4d0820]
cmp ecx, edi
jb 0x4137ef
movsd xmm0, qword [esp + 0xd0]
mov eax, ecx
xor edx, edx
div edi
mulsd xmm3, xmm0
sub eax, 1
jne 0x4137e6
cmp byte [esp + 0xe], 1
jne 0x413836
movsd qword [esp + 0x48], xmm1
mov eax, dword [esp + 0x4c]
shr eax, 0x14
and eax, 0x7ff
sub eax, 0x3ff
cdq
idiv dword [esp + 0x54]
add eax, esi
cmp eax, 0xf
jge 0x41382c
movaps xmm0, xmm1
mulsd xmm0, qword [esp + 0xd8]
addsd xmm0, xmm3
movaps xmm3, xmm0
addsd xmm1, xmm3
movsd qword [esp + 0x48], xmm1
xor edi, edi
movaps xmm0, xmm1
mov dword [esp + 0x18], edi
call fcn.00414e52
test eax, eax
je 0x41385a
mov esi, dword [esp + 0x54]
mov edi, 0x4e36f4
mov dword [esp + 0x24], edi
jmp 0x414150
comisd xmm1, xmm2
jbe 0x413984
movsd xmm4, qword [esp + 0xe8]
comisd xmm1, xmm4
mov ecx, dword [esp + 0x6c]
movsd xmm5, qword [esp + 0xe0]
movaps xmm2, xmm5
jb 0x4138a2
mov eax, dword [esp + 0x5c]
cmp edi, ecx
jg 0x41389e
mulsd xmm2, xmm4
add edi, eax
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x413887
mov dword [esp + 0x18], edi
movsd xmm4, qword [esp + 0x120]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x4138d3
mov eax, dword [esp + 0x50]
cmp edi, ecx
jg 0x4138cf
movaps xmm2, xmm0
add edi, eax
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x4138bc
mov dword [esp + 0x18], edi
movsd xmm4, qword [esp + 0x70]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x4138fc
cmp edi, ecx
jg 0x4138f8
movaps xmm2, xmm0
inc edi
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x4138e6
mov dword [esp + 0x18], edi
divsd xmm1, xmm2
movsd xmm0, qword [esp + 0x108]
comisd xmm0, xmm1
movsd qword [esp + 0x48], xmm1
jbe 0x413935
movsd xmm2, qword [esp + 0x110]
mulsd xmm1, xmm2
sub edi, 8
comisd xmm0, xmm1
ja 0x41391e
mov dword [esp + 0x18], edi
movsd qword [esp + 0x48], xmm1
comisd xmm5, xmm1
jbe 0x413950
mulsd xmm1, xmm4
dec edi
comisd xmm5, xmm1
ja 0x41393b
mov dword [esp + 0x18], edi
movsd qword [esp + 0x48], xmm1
cmp edi, ecx
jle 0x41398a
mov ecx, dword [esp + 0x3c]
lea edi, [esp + 0x88]
xor eax, eax
mov byte [esp + 0x88], cl
test cl, cl
mov dword [esp + 0x24], edi
setne al
mov dword [esp + eax + 0x88], 0x666e49
lea esi, [eax + 3]
jmp 0x414150
movsd xmm4, qword [esp + 0x70]
mov al, byte [esp + 0xe]
lea esi, [esp + 0x88]
cmp al, 1
je 0x4139bd
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x48], xmm1
jb 0x4139bd
mulsd xmm1, qword [esp + 0x118]
inc edi
mov dword [esp + 0x18], edi
movsd qword [esp + 0x48], xmm1
cmp al, 3
jne 0x4139ea
cmp byte [esp + 0x1f], 0
sete byte [esp + 0x17]
cmp edi, 0xfffffffc
jl 0x4139e2
mov eax, dword [esp + 0x2c]
cmp edi, eax
jg 0x4139e2
sub eax, edi
mov dword [esp + 0x2c], eax
mov al, 1
jmp 0x4139e4
mov al, 2
mov byte [esp + 0xe], al
jmp 0x4139f2
mov dl, byte [esp + 0x1e]
mov byte [esp + 0x17], dl
xor edi, edi
cmp al, 2
cmovne edi, dword [esp + 0x18]
xor eax, eax
test edi, edi
cmovg eax, edi
cdq
mov ecx, eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x2c]
cdq
add ecx, eax
mov eax, dword [esp + 0x10]
adc dword [esp + 0x38], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x38]
adc eax, edx
add ecx, 0xf
adc eax, 0
js 0x413a4a
jg 0x413a30
cmp ecx, 0x46
jbe 0x413a4a
push eax
push ecx
mov ecx, dword [ebp + 8]
call fcn.00412fc0
mov dword [esp + 0x60], eax
mov esi, eax
pop ecx
pop ecx
test eax, eax
je case.default.0x413449
mov dh, byte [esp + 0x1e]
movzx eax, dh
imul ecx, eax, 0xa
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x24], esi
add ecx, 0x10
test eax, eax
mov dword [esp + 0x38], ecx
setg dl
or dl, dh
or dl, byte [esp + 0x1f]
cmp byte [esp + 0x3c], 0
mov byte [esp + 0x1f], dl
je 0x413a84
mov ecx, dword [esp + 0x3c]
mov byte [esi], cl
inc esi
mov ecx, dword [esp + 0x38]
test edi, edi
jns 0x413a8e
mov byte [esi], 0x30
inc esi
jmp 0x413acf
movsd xmm1, qword [esp + 0x48]
movsd xmm2, qword [esp + 0x70]
test ecx, ecx
jg 0x413aa2
mov al, 0x30
jmp 0x413ab9
cvttsd2si eax, xmm1
dec ecx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
inc esi
sub edi, 1
jns 0x413a9a
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x48], xmm1
test dl, dl
je 0x413ad7
mov byte [esi], 0x2e
inc esi
add edi, 1
jns 0x413b39
neg edi
push edi
push 0x30
push esi
call fcn.0049ee30
mov eax, dword [esp + 0x38]
add esp, 0xc
mov ecx, dword [esp + 0x38]
add esi, edi
mov dl, byte [esp + 0x1f]
sub eax, edi
mov dh, byte [esp + 0x1e]
jmp 0x413b39
dec eax
mov dword [esp + 0x2c], eax
test ecx, ecx
jg 0x413b0d
mov al, 0x30
jmp 0x413b32
movsd xmm1, qword [esp + 0x48]
dec ecx
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [esp + 0x70]
movsd qword [esp + 0x48], xmm1
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x2c]
test eax, eax
jg 0x413b00
cmp byte [esp + 0x17], 0
je 0x413b6b
test dl, dl
je 0x413b6b
jmp 0x413b4f
mov esi, eax
mov byte [esi], 0
lea eax, [esi - 1]
cmp byte [eax], 0x30
je 0x413b4a
cmp byte [esi - 1], 0x2e
jne 0x413b6b
test dh, dh
je 0x413b67
mov byte [esi], 0x30
inc esi
jmp 0x413b6b
dec esi
mov byte [esi], 0
cmp byte [esp + 0xe], 2
jne 0x413bce
mov eax, dword [esp + 0x40]
lea edi, [esi + 2]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
mov eax, dword [esp + 0x18]
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp dword [esp + 0x18], 0
setl al
lea eax, [eax*2 + 0x2b]
mov byte [esi + 1], al
mov esi, edi
cmp ecx, dword [esp + 0x5c]
jl 0x413bba
mov eax, ecx
lea esi, [edi + 1]
cdq
idiv dword [esp + 0x5c]
add al, 0x30
mov ecx, edx
mov byte [edi], al
mov eax, ecx
cdq
idiv dword [esp + 0x50]
add al, 0x30
add dl, 0x30
mov byte [esi], al
mov byte [esi + 1], dl
add esi, 2
mov edi, dword [esp + 0x24]
mov cl, byte [esp + 0xd]
mov eax, dword [esp + 0x10]
mov byte [esi], 0
sub esi, edi
cmp byte [esp + 0x2b], 0
je 0x414158
test cl, cl
jne 0x414158
cmp esi, eax
jge 0x414158
mov ecx, eax
sub ecx, esi
mov esi, eax
mov edx, esi
cmp esi, ecx
jl 0x413c19
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [edx + edi], al
dec edx
cmp edx, ecx
jge 0x413c0a
mov esi, dword [esp + 0x10]
xor eax, eax
cmp byte [esp + 0x3c], al
setne al
test ecx, ecx
je 0x414150
push ecx
add eax, edi
push 0x30
push eax
call fcn.0049ee30
add esp, 0xc
jmp 0x414150
cmp byte [esp + 0xf], 0
jne 0x414149
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov ecx, dword [eax - 4]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x414149
lea edi, [esp + 0x88]
mov byte [esp + 0x88], 0x25
xor esi, esi
mov dword [esp + 0x24], edi
inc esi
jmp 0x414150
cmp byte [esp + 0xf], 0
je 0x413ce9
mov ecx, dword [esp + 0x44]
call fcn.00412f9d
xor esi, esi
mov edx, eax
inc esi
mov dword [esp + 0x18], esi
test edx, edx
je 0x413cdc
mov cl, byte [edx]
inc edx
mov byte [esp + 0x88], cl
movsx ecx, cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x413dad
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x413dad
mov byte [esp + esi + 0x88], cl
inc esi
inc edx
mov dword [esp + 0x18], esi
cmp esi, 4
jl 0x413cb7
jmp 0x413dad
mov byte [esp + 0x88], 0
jmp 0x413dad
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov ecx, dword [eax - 4]
cmp ecx, 0x80
jae 0x413d07
xor esi, esi
inc esi
jmp 0x413da2
cmp ecx, 0x800
jae 0x413d31
mov eax, ecx
and cl, 0x3f
shr eax, 6
and al, 0x1f
sub al, 0x40
add cl, 0x80
push 2
mov byte [esp + 0x8c], al
mov byte [esp + 0x8d], cl
pop esi
jmp 0x413da9
mov al, cl
mov edx, ecx
and al, 0x3f
shr edx, 6
add al, 0x80
and dl, 0x3f
mov byte [esp + 0x2b], al
mov eax, ecx
shr eax, 0xc
cmp ecx, 0x10000
jae 0x413d76
mov esi, dword [esp + 0x54]
and al, 0xf
sub al, 0x20
add dl, 0x80
mov byte [esp + 0x88], al
mov al, byte [esp + 0x2b]
mov byte [esp + 0x89], dl
mov byte [esp + 0x8a], al
jmp 0x413da9
shr ecx, 0x12
and al, 0x3f
add al, 0x80
and cl, 7
sub cl, 0x10
mov byte [esp + 0x89], al
mov al, byte [esp + 0x2b]
add dl, 0x80
push 4
mov byte [esp + 0x8e], dl
mov byte [esp + 0x8f], al
pop esi
mov byte [esp + 0x88], cl
mov dword [esp + 0x18], esi
mov edi, dword [esp + 0x2c]
cmp edi, 1
jle 0x413dfd
mov ecx, dword [esp + 0x10]
sub ecx, edi
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, 1
jle 0x413de3
cmp byte [esp + 0xd], 0
jne 0x413de3
push 0x20
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00414337
add esp, 0xc
and dword [esp + 0x10], 0
dec edi
push esi
lea eax, [esp + 0x8c]
push eax
push dword [ebp + 8]
call fcn.004143ac
add esp, 0xc
sub edi, 1
jne 0x413de4
lea edi, [esp + 0x88]
mov dword [esp + 0x24], edi
jmp 0x41407e
cmp byte [esp + 0xf], 0
je 0x413e27
mov ecx, dword [esp + 0x44]
call fcn.00412f9d
mov edi, eax
mov dword [esp + 0x24], eax
mov ch, 5
jmp 0x413e39
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x24], edi
test edi, edi
jne 0x413e48
mov edi, 0x4e36f8
mov dword [esp + 0x24], edi
jmp 0x413ea5
cmp ch, 6
jne 0x413ea5
mov esi, dword [ebp + 8]
cmp dword [esi + 0x10], 0
jne 0x413e9f
cmp dword [esi + 0xc], 0
je 0x413e9f
cmp dword [esp + 0x10], 0
jne 0x413e9f
cmp dword [esp + 0x2c], 0
jge 0x413e9f
cmp byte [esi + 0x14], 0
jne 0x413e9f
mov ecx, dword [esi]
mov edx, edi
mov dword [esi + 4], edi
call fcn.004129d2
mov ecx, edi
mov dword [esi + 8], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x413e84
sub ecx, edx
and ecx, 0x7fffffff
or byte [esi + 0x15], 4
mov dword [esi + 0x10], ecx
jmp 0x41414e
mov eax, edi
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x413ef9
cmp byte [esp + 0x1e], 0
je 0x413ed7
mov esi, edi
jmp 0x413ecf
mov al, byte [esi]
dec ecx
test al, al
je 0x413ed3
inc esi
cmp al, 0xc0
jb 0x413ecf
jmp 0x413ec7
inc esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x413ec6
test ecx, ecx
jg 0x413eb8
sub esi, edi
jmp 0x413f0d
xor esi, esi
test ecx, ecx
jle 0x414150
cmp byte [esi + edi], 0
je 0x414150
inc esi
mov dword [esp + 0x18], esi
cmp esi, ecx
jl 0x413ee1
jmp 0x414073
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x413efe
sub esi, ecx
and esi, 0x7fffffff
mov dword [esp + 0x18], esi
jmp 0x414073
push 0x27
pop eax
push 0x22
cmp ch, 0xe
pop edx
cmove eax, edx
cmp byte [esp + 0xf], 0
mov dword [esp + 0x3c], eax
je 0x413f42
mov ecx, dword [esp + 0x44]
call fcn.00412f9d
mov ch, byte [esp + 0xe]
mov edx, eax
mov dword [esp + 0x40], eax
jmp 0x413f54
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov edx, dword [eax - 4]
mov dword [esp + 0x40], edx
mov eax, edx
mov dword [esp + 0x48], eax
test edx, edx
jne 0x413f72
cmp ch, 0xa
mov edx, str.NULL
mov esi, 0x4e3704
cmovne edx, esi
mov dword [esp + 0x40], edx
xor esi, esi
xor edi, edi
cmp dword [esp + 0x2c], esi
je 0x413fbc
mov ch, byte [esp + 0x1e]
mov cl, byte [edi + edx]
test cl, cl
je 0x413fb4
cmp cl, byte [esp + 0x3c]
lea eax, [esi + 1]
cmovne eax, esi
mov esi, eax
test ch, ch
je 0x413fac
and cl, 0xc0
cmp cl, 0xc0
jne 0x413fac
jmp 0x413fa2
inc edi
mov al, byte [edx + edi + 1]
and al, 0xc0
cmp al, 0x80
je 0x413fa1
inc edi
sub dword [esp + 0x2c], 1
jne 0x413f80
mov eax, dword [esp + 0x48]
mov ch, byte [esp + 0xe]
test eax, eax
je 0x413fcf
cmp ch, 0xa
jne 0x413fcf
mov dword [esp + 0x38], 1
jmp 0x413fd4
and dword [esp + 0x38], 0
lea eax, [edi + 3]
add eax, esi
cmp eax, 0x46
jle 0x413fff
mov ecx, dword [ebp + 8]
cdq
push edx
push eax
call fcn.00412fc0
mov dword [esp + 0x60], eax
mov dword [esp + 0x2c], eax
pop ecx
pop ecx
mov ecx, eax
test eax, eax
je case.default.0x413449
jmp 0x41400a
lea ecx, [esp + 0x88]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x38]
xor esi, esi
mov dword [esp + 0x18], esi
test eax, eax
je 0x414023
mov edx, dword [esp + 0x3c]
inc esi
mov byte [ecx], dl
mov dword [esp + 0x18], esi
xor ecx, ecx
test edi, edi
jle 0x41405b
mov eax, dword [esp + 0x40]
mov dl, byte [ecx + eax]
mov eax, dword [esp + 0x24]
mov byte [esi + eax], dl
inc esi
mov eax, dword [esp + 0x40]
cmp dl, byte [esp + 0x3c]
jne 0x41404e
mov eax, dword [esp + 0x24]
mov byte [esi + eax], dl
inc esi
mov eax, dword [esp + 0x40]
inc ecx
cmp ecx, edi
jl 0x41402d
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], esi
mov edi, dword [esp + 0x24]
test eax, eax
je 0x41406f
mov eax, dword [esp + 0x3c]
mov byte [esi + edi], al
inc esi
mov dword [esp + 0x18], esi
mov byte [esi + edi], 0
cmp byte [esp + 0x1e], 0
je 0x414150
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x414154
lea edx, [esi - 1]
test edx, edx
js 0x414154
mov esi, eax
lea eax, [edx + edi]
mov al, byte [eax]
lea ecx, [esi + 1]
and al, 0xc0
cmp al, 0x80
cmovne ecx, esi
sub edx, 1
mov esi, ecx
jns 0x414097
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x18]
jmp 0x414150
mov ecx, dword [ebp + 8]
test byte [ecx + 0x15], 1
je case.default.0x413449
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x20], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x414149
cmp dword [eax + 4], 0
je 0x414149
push dword [eax + 4]
push dword [eax]
push ecx
call fcn.004143ac
add esp, 0xc
jmp 0x414149
mov ecx, dword [ebp + 8]
test byte [ecx + 0x15], 1
je case.default.0x413449
mov eax, dword [esp + 0x20]
lea edi, [eax + 8]
mov eax, dword [eax]
imul esi, dword [edi - 4], 0x48
mov dword [esp + 0x48], eax
mov eax, dword [esi + eax + 0xc]
test eax, eax
je 0x414131
push eax
push ecx
call fcn.004143ec
push 1
push 0x4e370c
push dword [ebp + 8]
call fcn.004143ac
mov ecx, dword [ebp + 8]
add esp, 0x14
mov eax, dword [esp + 0x48]
push dword [esi + eax + 0x10]
push ecx
call fcn.004143ec
pop ecx
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x28]
pop ecx
and dword [esp + 0x10], 0
xor esi, esi
mov eax, dword [esp + 0x10]
mov cl, byte [esp + 0xd]
sub eax, esi
mov dword [esp + 0x10], eax
test eax, eax
jle 0x414197
test cl, cl
jne 0x414174
push 0x20
push eax
push dword [ebp + 8]
call fcn.00414337
add esp, 0xc
push esi
mov esi, dword [ebp + 8]
push edi
push esi
call fcn.004143ac
add esp, 0xc
cmp byte [esp + 0xd], 0
je 0x4141a5
push 0x20
push dword [esp + 0x14]
push esi
call fcn.00414337
jmp 0x4141a2
push esi
mov esi, dword [ebp + 8]
push edi
push esi
call fcn.004143ac
add esp, 0xc
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4141bb
mov ecx, dword [esi]
mov edx, eax
call fcn.00412a50
and dword [esp + 0x58], 0
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
inc edx
mov ecx, dword [ebp + 8]
movsx eax, byte [edx]
test eax, eax
jne 0x41316a
jmp case.default.0x413449
push 1
push 0x4e36f0
push dword [ebp + 8]
call fcn.004143ac
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret