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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xdc
mov eax, dword [0x6300f4]
xor eax, esp
mov dword [esp + 0xd8], eax
mov ecx, dword [ebp + 8]
xor eax, eax
and dword [esp + 0x48], eax
mov edx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
xor edi, edi
mov dword [esp + 0x34], ecx
test byte [ecx + 0x15], 2
mov dword [esp + 0x1c], edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x28], edi
je 0x45227f
mov eax, dword [edx]
add edx, 4
mov dword [esp + 0x1c], edx
mov dword [esp + 0x54], eax
mov byte [esp + 0x12], 1
jmp 0x452283
mov byte [esp + 0x12], al
movsx eax, byte [esi]
test eax, eax
je case.default.0x452587
mov dword [esp + 0x80], 0x5ed460
mov dword [esp + 0x74], 6
mov dword [esp + 0x84], htons
mov dword [esp + 0x68], 0xa
mov dword [esp + 0x6c], 3
mov dword [esp + 0x78], 0x15e
mov dword [esp + 0x7c], 0x64
cmp eax, 0x25
je 0x4522fe
mov edi, esi
mov dword [esp + 0x28], edi
inc esi
mov al, byte [esi]
test al, al
je 0x4522e2
cmp al, 0x25
jne 0x4522d7
mov eax, esi
sub eax, edi
push eax
push edi
push ecx
call fcn.00453510
add esp, 0xc
cmp byte [esi], 0
je case.default.0x452587
mov edx, dword [esp + 0x1c]
inc esi
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
test ecx, ecx
je 0x453323
and dword [esp + 0x14], 0
or dword [esp + 0x2c], 0xffffffff
mov byte [esp + 0x3b], 0
mov byte [esp + 0x22], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x1b], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0x33], 0
cmp ecx, 0x2c
jg 0x452401
je 0x4523f7
mov eax, ecx
sub eax, 0x20
je 0x4523ed
sub eax, 1
je 0x4523e3
dec eax
sub eax, 1
je 0x4523d9
sub eax, 7
je 0x45237c
sub eax, 1
jne 0x452537
mov byte [esp + 0x11], 0x2b
jmp 0x4524fe
cmp byte [esp + 0x12], 0
je 0x452394
mov ecx, dword [esp + 0x54]
call fcn.0045217f
mov edx, eax
mov dword [esp + 0x14], eax
jmp 0x4523a2
add edx, 4
mov dword [esp + 0x1c], edx
mov edx, dword [edx - 4]
mov dword [esp + 0x14], edx
test edx, edx
jns 0x4523be
mov ecx, edx
mov byte [esp + 0x10], 1
neg ecx
xor eax, eax
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x14], eax
movsx eax, byte [esi + 1]
cmp eax, 0x2e
je 0x4524fe
cmp eax, 0x6c
jne 0x45252f
jmp 0x4524fe
mov byte [esp + 0x23], 1
jmp 0x4524fe
mov byte [esp + 0x22], 1
jmp 0x4524fe
mov byte [esp + 0x11], 0x20
jmp 0x4524fe
mov byte [esp + 0x1b], 0x2c
jmp 0x4524fe
cmp ecx, 0x2d
je 0x4524f9
cmp ecx, 0x2e
je 0x452474
push 0x30
pop edx
cmp ecx, edx
je 0x45246a
jle 0x452537
cmp ecx, 0x39
jg 0x452513
inc esi
lea eax, [ecx - 0x30]
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
cmp ecx, edx
jl 0x45244d
cmp ecx, 0x39
jg 0x452449
imul eax, eax, 0xa
add ecx, 0xffffffd0
add eax, ecx
inc esi
movsx ecx, byte [esi]
cmp ecx, edx
jge 0x452434
mov dword [esp + 0x4c], esi
and eax, 0x7fffffff
mov dword [esp + 0x14], eax
cmp ecx, 0x2e
je 0x452464
cmp ecx, 0x6c
jne 0x452537
dec esi
jmp 0x4524fe
mov byte [esp + 0x3b], 1
jmp 0x4524fe
inc esi
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
cmp ecx, 0x2a
jne 0x4524c9
cmp byte [esp + 0x12], 0
je 0x452499
mov ecx, dword [esp + 0x54]
call fcn.0045217f
mov edx, eax
mov dword [esp + 0x2c], eax
jmp 0x4524a7
add edx, 4
mov dword [esp + 0x1c], edx
mov edx, dword [edx - 4]
mov dword [esp + 0x2c], edx
test edx, edx
jns 0x4524bf
mov ecx, edx
or eax, 0xffffffff
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x2c], eax
inc esi
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
jmp 0x45245b
xor edx, edx
cmp ecx, 0x30
jl 0x4524ea
cmp ecx, 0x39
jg 0x4524e6
imul eax, edx, 0xa
lea edx, [ecx - 0x30]
add edx, eax
inc esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x4524d0
mov dword [esp + 0x4c], esi
and edx, 0x7fffffff
mov dword [esp + 0x2c], edx
jmp 0x45245b
mov byte [esp + 0x10], 1
inc esi
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
test ecx, ecx
je 0x452537
mov edx, dword [esp + 0x1c]
jmp 0x45233b
cmp ecx, 0x6c
jne 0x452537
inc esi
mov byte [esp + 0x33], 1
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
cmp ecx, 0x6c
jne 0x452537
mov byte [esp + 0x33], 2
inc esi
mov dword [esp + 0x4c], esi
movsx ecx, byte [esi]
mov edx, dword [esp + 0x80]
xor esi, esi
mov dword [esp + 0x3c], edx
mov byte [esp + 0x13], 0x11
movsx eax, byte [edx]
cmp ecx, eax
je 0x452567
add edx, dword [esp + 0x74]
inc esi
cmp edx, 0x5ed4ea
jl 0x452549
mov ch, byte [esp + 0x13]
mov edx, dword [esp + 0x3c]
jmp 0x45257b
imul edx, esi, 6
add edx, 0x5ed460
mov dword [esp + 0x3c], edx
mov ch, byte [edx + 3]
mov byte [esp + 0x13], ch
movzx eax, ch
cmp eax, 0x10
ja case.default.0x452587
jmp dword [eax*4 + 0x45334b]
mov al, 1
mov byte [esp + 0x33], al
mov byte [esp + 0x1b], 0
test byte [edx + 2], 1
je 0x452610
cmp byte [esp + 0x12], 0
je 0x4525b1
mov ecx, dword [esp + 0x54]
call fcn.0045217f
jmp 0x4525de
mov al, byte [esp + 0x33]
test al, al
je 0x4525cf
cmp al, 2
mov eax, dword [esp + 0x1c]
jne 0x4525d3
mov edi, dword [eax]
add eax, 8
mov dword [esp + 0x1c], eax
mov esi, dword [eax - 4]
jmp 0x4525e2
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov eax, dword [eax - 4]
cdq
mov edi, eax
mov esi, edx
test esi, esi
jg 0x45260a
jl 0x4525ec
test edi, edi
jae 0x45260a
test edi, edi
jne 0x4525ff
mov eax, dword [esp + 0x84]
cmp esi, eax
jne 0x4525ff
mov esi, eax
jmp 0x452606
neg edi
adc esi, 0
neg esi
mov cl, 0x2d
jmp 0x452651
mov cl, byte [esp + 0x11]
jmp 0x452655
cmp byte [esp + 0x12], 0
je 0x452626
mov ecx, dword [esp + 0x54]
call fcn.0045217f
mov edi, eax
mov esi, edx
jmp 0x45264f
mov al, byte [esp + 0x33]
test al, al
je 0x452640
cmp al, 2
mov eax, dword [esp + 0x1c]
jne 0x452644
mov edi, dword [eax]
add eax, 8
mov esi, dword [eax - 4]
jmp 0x45264b
mov eax, dword [esp + 0x1c]
mov edi, dword [eax]
add eax, 4
xor esi, esi
mov dword [esp + 0x1c], eax
xor cl, cl
mov byte [esp + 0x11], cl
mov eax, edi
or eax, esi
jne 0x45265f
mov byte [esp + 0x23], al
cmp byte [esp + 0x3b], 0
je 0x452682
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x14]
setne al
sub ecx, eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
cmovl eax, ecx
mov dword [esp + 0x2c], eax
jmp 0x452686
mov eax, dword [esp + 0x2c]
cmp eax, 0x25
jge 0x45269f
push 0x46
pop eax
lea ecx, [esp + 0x98]
mov dword [esp + 0x24], eax
mov dword [esp + 0x50], ecx
jmp 0x4526eb
cdq
add eax, dword [esp + 0x68]
mov ecx, edx
mov dword [esp + 0x24], eax
adc ecx, 0
cmp byte [esp + 0x1b], 0
je 0x4526c8
mov eax, dword [esp + 0x2c]
cdq
idiv dword [esp + 0x6c]
cdq
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x38]
push eax
call fcn.004521c3
mov dword [esp + 0x78], eax
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x50], ecx
test eax, eax
je case.default.0x452587
mov eax, dword [esp + 0x24]
dec ecx
add ecx, eax
cmp byte [esp + 0x13], 0xf
mov dword [esp + 0x28], ecx
jne 0x452753
push ebx
push 0
push dword [esp + 0x70]
push esi
push edi
call fcn.005719c0
mov dword [esp + 0x48], ebx
pop ebx
mov dword [esp + 0x58], ecx
cmp ecx, 4
jge 0x45272b
push 0
push dword [esp + 0x6c]
push edx
push eax
call fcn.005b2840
cmp eax, 1
jne 0x45272f
test edx, edx
jne 0x45272f
xor ecx, ecx
jmp 0x452733
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x28]
mov al, byte [ecx*2 + 0x5ea665]
mov byte [edx - 1], al
sub edx, 2
mov al, byte [ecx*2 + str.thstndrd]
mov ecx, edx
mov dword [esp + 0x28], edx
mov byte [edx], al
mov edx, dword [esp + 0x3c]
movzx eax, byte [edx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x40], eax
movzx eax, byte [edx + 1]
cdq
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], edx
push ebx
push edx
push eax
push esi
dec ecx
push edi
mov dword [esp + 0x3c], ecx
call fcn.005719c0
mov dword [esp + 0x98], ebx
pop ebx
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x60]
mov al, byte [ecx + eax]
mov ecx, dword [esp + 0x28]
mov byte [ecx], al
mov eax, dword [esp + 0x58]
test esi, esi
ja 0x452771
jb 0x4527ab
test edi, edi
jne 0x452771
mov esi, dword [esp + 0x50]
mov eax, esi
mov edi, dword [esp + 0x28]
sub eax, edi
mov edx, dword [esp + 0x24]
dec eax
mov ecx, dword [esp + 0x2c]
add eax, edx
cmp ecx, eax
jle 0x4527d7
sub ecx, eax
add eax, ecx
dec edi
mov byte [edi], 0x30
sub ecx, 1
jne 0x4527ca
mov dword [esp + 0x28], edi
cmp byte [esp + 0x1b], 0
je 0x452819
dec eax
cdq
idiv dword [esp + 0x6c]
mov esi, eax
inc edx
sub edi, esi
xor ecx, ecx
mov dword [esp + 0x28], edi
test esi, esi
jle 0x452811
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
sub edx, 1
jne 0x45280e
mov al, byte [esp + 0x1b]
inc ecx
mov edx, dword [esp + 0x6c]
dec esi
mov byte [ecx + edi], al
inc ecx
jmp 0x4527ef
mov esi, dword [esp + 0x50]
mov edx, dword [esp + 0x24]
mov al, byte [esp + 0x11]
test al, al
je 0x452828
dec edi
mov dword [esp + 0x28], edi
mov byte [edi], al
cmp byte [esp + 0x23], 0
je 0x452856
mov eax, dword [esp + 0x3c]
mov al, byte [eax + 5]
test al, al
je 0x452856
movzx eax, al
add eax, 0x5e9178
mov cl, byte [eax]
test cl, cl
je 0x452856
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x452848
mov dword [esp + 0x28], edi
sub esi, edi
dec esi
add esi, edx
jmp 0x45329b
cmp byte [esp + 0x12], 0
je 0x45288e
mov esi, dword [esp + 0x54]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x452877
xorps xmm0, xmm0
jmp 0x45289e
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
call fcn.00468dd9
mov ch, byte [esp + 0x13]
jmp 0x45289e
mov eax, dword [esp + 0x1c]
add eax, 8
mov dword [esp + 0x1c], eax
movsd xmm0, qword [eax - 8]
mov esi, dword [esp + 0x2c]
xorps xmm1, xmm1
test esi, esi
movsd qword [esp + 0x40], xmm0
cmovs esi, dword [esp + 0x74]
comisd xmm1, xmm0
mov dword [esp + 0x2c], esi
jbe 0x4528ce
xorps xmm0, xmmword [0x60a740]
movsd qword [esp + 0x40], xmm0
mov byte [esp + 0x11], 0x2d
cmp ch, 3
jne 0x4528dc
test esi, esi
jle 0x4528dc
dec esi
mov dword [esp + 0x2c], esi
mov edi, dword [esp + 0x68]
mov ecx, esi
and ecx, 0xfff
xor edx, edx
mov eax, ecx
div edi
movsd xmm1, qword [edx*8 + 0x5ee1b0]
movsd qword [esp + 0x60], xmm1
cmp ecx, edi
jb 0x45291a
mov eax, ecx
xor edx, edx
div edi
mulsd xmm1, qword [0x60a400]
sub eax, 1
jne 0x452907
movsd qword [esp + 0x60], xmm1
cmp byte [esp + 0x13], 1
jne 0x45298f
push 8
lea eax, [esp + 0x5c]
movsd qword [esp + 0x5c], xmm0
push eax
lea eax, [esp + 0x90]
push eax
call fcn.00588a40
mov eax, dword [esp + 0x98]
add esp, 0xc
shr eax, 0x14
and eax, 0x7ff
movsd xmm1, qword [esp + 0x40]
sub eax, 0x3ff
movsd xmm2, qword [esp + 0x60]
cdq
idiv dword [esp + 0x6c]
add eax, esi
cmp eax, 0xf
jge 0x452982
movaps xmm0, xmm1
mulsd xmm0, qword [0x60a3f8]
addsd xmm0, xmm2
movaps xmm2, xmm0
movsd qword [esp + 0x60], xmm2
movaps xmm0, xmm2
addsd xmm0, xmm1
movsd qword [esp + 0x40], xmm0
xor edi, edi
mov dword [esp + 0x24], edi
call fcn.0045417a
test eax, eax
je 0x4529b0
mov esi, dword [esp + 0x6c]
mov edi, 0x5fb71c
mov dword [esp + 0x28], edi
jmp 0x45329b
movsd xmm1, qword [esp + 0x40]
comisd xmm1, xmmword [0x60a3f0]
jbe 0x452aee
movsd xmm3, qword [0x60a548]
comisd xmm1, xmm3
mov ecx, dword [esp + 0x78]
movsd xmm4, qword [0x60a438]
movaps xmm2, xmm4
jb 0x452a00
mov eax, dword [esp + 0x7c]
cmp edi, ecx
jg 0x4529fc
mulsd xmm2, xmm3
add edi, eax
movaps xmm0, xmm2
mulsd xmm0, xmm3
comisd xmm1, xmm0
jae 0x4529e5
mov dword [esp + 0x24], edi
movsd xmm3, qword [0x60a500]
movaps xmm0, xmm2
mulsd xmm0, xmm3
comisd xmm1, xmm0
jb 0x452a30
mov eax, dword [esp + 0x68]
cmp edi, ecx
jg 0x452a2c
movaps xmm2, xmm0
add edi, eax
mulsd xmm0, xmm3
comisd xmm1, xmm0
jae 0x452a19
mov dword [esp + 0x24], edi
movsd xmm3, qword [0x60a450]
movaps xmm0, xmm2
mulsd xmm0, xmm3
comisd xmm1, xmm0
jb 0x452a5b
cmp edi, ecx
jg 0x452a57
movaps xmm2, xmm0
inc edi
mulsd xmm0, xmm3
comisd xmm1, xmm0
jae 0x452a45
mov dword [esp + 0x24], edi
divsd xmm1, xmm2
movsd xmm0, qword [0x60a408]
comisd xmm0, xmm1
movsd qword [esp + 0x40], xmm1
jbe 0x452a8e
mulsd xmm1, qword [0x60a4e0]
sub edi, 8
comisd xmm0, xmm1
ja 0x452a73
mov dword [esp + 0x24], edi
movsd qword [esp + 0x40], xmm1
comisd xmm4, xmm1
jbe 0x452aa9
mulsd xmm1, xmm3
dec edi
comisd xmm4, xmm1
ja 0x452a94
mov dword [esp + 0x24], edi
movsd qword [esp + 0x40], xmm1
cmp edi, ecx
jle 0x452af6
mov cl, byte [esp + 0x11]
lea edi, [esp + 0x98]
xor eax, eax
mov byte [esp + 0x98], cl
test cl, cl
mov dword [esp + 0x28], edi
push 4
setne al
mov ecx, edi
mov dword [esp + 0x44], eax
add eax, ecx
push 0x5fb720
push eax
call fcn.00588a40
mov esi, dword [esp + 0x4c]
add esp, 0xc
add esi, 3
jmp 0x45329b
movsd xmm3, qword [0x60a450]
mov al, byte [esp + 0x13]
lea esi, [esp + 0x98]
cmp al, 1
je 0x452b31
movsd xmm0, qword [esp + 0x60]
addsd xmm0, xmm1
movaps xmm1, xmm0
comisd xmm1, xmm3
movsd qword [esp + 0x40], xmm1
jb 0x452b31
mulsd xmm1, qword [0x60a420]
inc edi
mov dword [esp + 0x24], edi
movsd qword [esp + 0x40], xmm1
cmp al, 3
jne 0x452b60
cmp byte [esp + 0x23], 0
sete byte [esp + 0x1b]
cmp edi, 0xfffffffc
jl 0x452b59
mov eax, dword [esp + 0x2c]
cmp edi, eax
jg 0x452b59
sub eax, edi
mov byte [esp + 0x13], 1
mov dword [esp + 0x2c], eax
jmp 0x452b6e
mov byte [esp + 0x13], 2
jmp 0x452b6c
mov cl, byte [esp + 0x22]
mov byte [esp + 0x1b], cl
cmp al, 2
jne 0x452b6e
xor edi, edi
xor eax, eax
test edi, edi
cmovg eax, edi
cdq
mov ecx, eax
mov dword [esp + 0x58], edx
mov eax, dword [esp + 0x2c]
cdq
add ecx, eax
mov eax, dword [esp + 0x14]
adc dword [esp + 0x58], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x58]
adc eax, edx
add ecx, 0xf
adc eax, 0
js 0x452bbe
jg 0x452ba3
cmp ecx, 0x46
jbe 0x452bbe
push eax
push ecx
mov ecx, dword [esp + 0x3c]
call fcn.004521c3
mov dword [esp + 0x78], eax
mov esi, eax
pop ecx
pop ecx
test eax, eax
je case.default.0x452587
movzx eax, byte [esp + 0x22]
mov dh, byte [esp + 0x11]
imul ecx, eax, 0xa
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], esi
add ecx, 0x10
test eax, eax
mov dword [esp + 0x60], ecx
setg dl
or dl, byte [esp + 0x22]
or dl, byte [esp + 0x23]
mov byte [esp + 0x23], dl
test dh, dh
je 0x452bf1
mov byte [esi], dh
inc esi
test edi, edi
jns 0x452bfb
mov byte [esi], 0x30
inc esi
jmp 0x452c3a
movsd xmm1, qword [esp + 0x40]
test ecx, ecx
jg 0x452c09
mov al, 0x30
jmp 0x452c24
cvttsd2si eax, xmm1
dec ecx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [0x60a450]
mov byte [esi], al
inc esi
sub edi, 1
jns 0x452c01
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x60], ecx
movsd qword [esp + 0x40], xmm1
test dl, dl
je 0x452c42
mov byte [esi], 0x2e
inc esi
add edi, 1
jns 0x452ca2
neg edi
push edi
push 0x30
push esi
call fcn.00589540
mov eax, dword [esp + 0x38]
add esp, 0xc
mov ecx, dword [esp + 0x60]
add esi, edi
mov dl, byte [esp + 0x23]
sub eax, edi
jmp 0x452ca2
dec eax
mov dword [esp + 0x2c], eax
test ecx, ecx
jg 0x452c74
mov al, 0x30
jmp 0x452c9b
movsd xmm1, qword [esp + 0x40]
dec ecx
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [0x60a450]
movsd qword [esp + 0x40], xmm1
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x2c]
test eax, eax
jg 0x452c67
cmp byte [esp + 0x1b], 0
je 0x452cd7
test dl, dl
je 0x452cd7
jmp 0x452cb8
mov esi, eax
mov byte [esi], 0
lea eax, [esi - 1]
cmp byte [eax], 0x30
je 0x452cb3
cmp byte [esi - 1], 0x2e
jne 0x452cd7
cmp byte [esp + 0x22], 0
je 0x452cd3
mov byte [esi], 0x30
inc esi
jmp 0x452cd7
dec esi
mov byte [esi], 0
cmp byte [esp + 0x13], 2
jne 0x452d2b
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
test edx, edx
jns 0x452cfe
mov byte [esi + 1], 0x2d
neg edx
jmp 0x452d02
mov byte [esi + 1], 0x2b
mov ecx, dword [esp + 0x7c]
add esi, 2
cmp edx, ecx
jl 0x452d17
mov eax, edx
cdq
idiv ecx
add al, 0x30
mov byte [esi], al
inc esi
mov eax, edx
cdq
idiv dword [esp + 0x68]
add al, 0x30
add dl, 0x30
mov byte [esi], al
mov byte [esi + 1], dl
add esi, 2
mov edi, dword [esp + 0x28]
mov cl, byte [esp + 0x10]
mov eax, dword [esp + 0x14]
mov byte [esi], 0
sub esi, edi
cmp byte [esp + 0x3b], 0
je 0x4532a3
test cl, cl
jne 0x4532a3
cmp esi, eax
jge 0x4532a3
mov ecx, eax
sub ecx, esi
mov esi, eax
mov edx, esi
cmp esi, ecx
jl 0x452d76
mov esi, edi
sub esi, ecx
mov al, byte [esi + edx]
mov byte [edx + edi], al
dec edx
cmp edx, ecx
jge 0x452d67
mov esi, dword [esp + 0x14]
xor eax, eax
cmp byte [esp + 0x11], al
setne al
test ecx, ecx
je 0x45329b
push ecx
add eax, edi
push 0x30
push eax
call fcn.00589540
add esp, 0xc
jmp 0x45329b
cmp byte [esp + 0x12], 0
jne 0x453294
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov ecx, dword [eax - 4]
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x453294
lea edi, [esp + 0x98]
mov byte [esp + 0x98], 0x25
xor esi, esi
mov dword [esp + 0x28], edi
inc esi
jmp 0x45329b
cmp byte [esp + 0x12], 0
je 0x452e45
mov ecx, dword [esp + 0x54]
call fcn.004521a1
xor esi, esi
mov edx, eax
inc esi
mov dword [esp + 0x24], esi
test edx, edx
je 0x452e38
movsx ecx, byte [edx]
inc edx
mov byte [esp + 0x98], cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x452f0e
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x452f0e
mov byte [esp + esi + 0x98], cl
inc esi
inc edx
mov dword [esp + 0x24], esi
cmp esi, 4
jl 0x452e13
jmp 0x452f0e
mov byte [esp + 0x98], 0
jmp 0x452f0e
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov ecx, dword [eax - 4]
cmp ecx, 0x80
jae 0x452e6a
xor esi, esi
mov byte [esp + 0x98], cl
inc esi
jmp 0x452f0a
mov eax, ecx
cmp ecx, 0x800
jae 0x452e93
shr eax, 6
and cl, 0x3f
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x98], al
mov byte [esp + 0x99], cl
push 2
jmp 0x452f09
cmp ecx, 0x10000
jae 0x452ecc
mov esi, dword [esp + 0x6c]
shr eax, 0xc
and al, 0xf
sub al, 0x20
mov byte [esp + 0x98], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x99], al
mov byte [esp + 0x9a], cl
jmp 0x452f0a
shr eax, 0x12
and al, 7
sub al, 0x10
mov byte [esp + 0x98], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [esp + 0x99], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [esp + 0x9a], al
mov byte [esp + 0x9b], cl
push 4
pop esi
mov dword [esp + 0x24], esi
mov edi, dword [esp + 0x2c]
cmp edi, 1
jle 0x452f60
mov ecx, dword [esp + 0x14]
sub ecx, edi
mov eax, ecx
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, 1
jle 0x452f45
cmp byte [esp + 0x10], 0
jne 0x452f45
push 0x20
push eax
mov eax, dword [esp + 0x3c]
push eax
call fcn.00453497
add esp, 0xc
and dword [esp + 0x14], 0
dec edi
push esi
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x3c]
call fcn.00453510
add esp, 0xc
sub edi, 1
jne 0x452f46
lea edi, [esp + 0x98]
mov dword [esp + 0x28], edi
jmp 0x4531cd
cmp byte [esp + 0x12], 0
je 0x452f8a
mov ecx, dword [esp + 0x54]
call fcn.004521a1
mov edi, eax
mov dword [esp + 0x28], eax
mov ch, 5
jmp 0x452f9c
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov edi, dword [eax - 4]
mov dword [esp + 0x28], edi
test edi, edi
jne 0x452fab
mov edi, 0x5f4bbf
mov dword [esp + 0x28], edi
jmp 0x453001
cmp ch, 6
jne 0x453001
mov esi, dword [esp + 0x34]
cmp dword [esi + 0x10], 0
jne 0x452ffb
cmp dword [esi + 0xc], 0
je 0x452ffb
cmp dword [esp + 0x14], 0
jne 0x452ffb
cmp dword [esp + 0x2c], 0
jge 0x452ffb
cmp byte [esi + 0x14], 0
jne 0x452ffb
mov ecx, dword [esi]
mov edx, edi
mov dword [esi + 4], edi
call fcn.00451b50
push edi
mov dword [esi + 8], eax
call fcn.0058cab0
and eax, 0x7fffffff
or byte [esi + 0x15], 4
pop ecx
mov dword [esi + 0x10], eax
jmp 0x453299
mov eax, edi
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x453055
cmp byte [esp + 0x22], 0
je 0x453033
mov esi, edi
jmp 0x45302b
mov al, byte [esi]
dec ecx
test al, al
je 0x45302f
inc esi
cmp al, 0xc0
jb 0x45302b
jmp 0x453023
inc esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x453022
test ecx, ecx
jg 0x453014
sub esi, edi
jmp 0x453064
xor esi, esi
test ecx, ecx
jle 0x45329b
cmp byte [esi + edi], 0
je 0x45329b
inc esi
mov dword [esp + 0x24], esi
cmp esi, ecx
jl 0x45303d
jmp 0x4531c2
push edi
call fcn.0058cab0
mov esi, eax
pop ecx
and esi, 0x7fffffff
mov dword [esp + 0x24], esi
jmp 0x4531c2
push 0x27
pop eax
push 0x22
cmp ch, 0xe
pop edx
cmove eax, edx
cmp byte [esp + 0x12], 0
mov dword [esp + 0x58], eax
je 0x453099
mov ecx, dword [esp + 0x54]
call fcn.004521a1
mov ch, byte [esp + 0x13]
mov edx, eax
mov dword [esp + 0x3c], eax
jmp 0x4530ab
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov edx, dword [eax - 4]
mov dword [esp + 0x3c], edx
mov esi, edx
mov dword [esp + 0x40], esi
test edx, edx
jne 0x4530c9
cmp ch, 0xa
mov edx, str.NULL
mov eax, str._NULL_
cmovne edx, eax
mov dword [esp + 0x3c], edx
xor eax, eax
xor edi, edi
mov dword [esp + 0x50], eax
cmp dword [esp + 0x2c], eax
je 0x45311a
mov esi, dword [esp + 0x2c]
mov cl, byte [edi + edx]
test cl, cl
je 0x453116
inc eax
cmp cl, byte [esp + 0x58]
cmovne eax, dword [esp + 0x50]
cmp byte [esp + 0x22], 0
mov dword [esp + 0x50], eax
je 0x453110
and cl, 0xc0
cmp cl, 0xc0
jne 0x453110
mov al, byte [edx + edi + 1]
and al, 0xc0
cmp al, 0x80
jne 0x45310c
inc edi
jmp 0x4530ff
mov eax, dword [esp + 0x50]
inc edi
sub esi, 1
jne 0x4530db
mov esi, dword [esp + 0x40]
test esi, esi
je 0x453128
cmp ch, 0xa
jne 0x453128
xor esi, esi
inc esi
jmp 0x45312a
xor esi, esi
add eax, 3
mov dword [esp + 0x60], esi
add eax, edi
cmp eax, 0x46
jle 0x45315a
mov ecx, dword [esp + 0x34]
cdq
push edx
push eax
call fcn.004521c3
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x28], ecx
test ecx, ecx
je case.default.0x452587
jmp 0x453165
lea eax, [esp + 0x98]
mov dword [esp + 0x28], eax
test esi, esi
je 0x45316f
mov ecx, dword [esp + 0x58]
mov byte [eax], cl
xor eax, eax
mov dword [esp + 0x24], esi
test edi, edi
jle 0x4531a7
mov ecx, dword [esp + 0x3c]
mov dl, byte [eax + ecx]
mov ecx, dword [esp + 0x28]
mov byte [esi + ecx], dl
inc esi
mov ecx, dword [esp + 0x3c]
cmp dl, byte [esp + 0x58]
jne 0x45319e
mov ecx, dword [esp + 0x28]
mov byte [esi + ecx], dl
inc esi
mov ecx, dword [esp + 0x3c]
inc eax
cmp eax, edi
jl 0x45317d
mov dword [esp + 0x24], esi
cmp dword [esp + 0x60], 0
mov edi, dword [esp + 0x28]
je 0x4531be
mov eax, dword [esp + 0x58]
mov byte [esi + edi], al
inc esi
mov dword [esp + 0x24], esi
mov byte [esi + edi], 0
cmp byte [esp + 0x22], 0
je 0x45329b
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x45329f
lea edx, [esi - 1]
test edx, edx
js 0x45329f
mov esi, eax
mov cl, byte [edx + edi]
lea eax, [esi + 1]
and cl, 0xc0
cmp cl, 0x80
cmovne eax, esi
sub edx, 1
mov esi, eax
jns 0x4531e6
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x24]
jmp 0x45329b
mov ecx, dword [esp + 0x34]
test byte [ecx + 0x15], 1
je case.default.0x452587
mov eax, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x1c], eax
mov eax, dword [eax - 4]
test eax, eax
je 0x453294
cmp dword [eax + 4], 0
je 0x453294
push dword [eax + 4]
push dword [eax]
push ecx
call fcn.00453510
add esp, 0xc
jmp 0x453294
mov ecx, dword [esp + 0x34]
test byte [ecx + 0x15], 1
je case.default.0x452587
mov eax, dword [esp + 0x1c]
mov esi, dword [eax]
add eax, 8
mov dword [esp + 0x1c], eax
imul edi, dword [eax - 4], 0x48
mov eax, dword [edi + esi + 0xc]
test eax, eax
je 0x453284
push eax
push ecx
call fcn.0045354e
push 1
push 0x5f4ad0
push dword [esp + 0x44]
call fcn.00453510
mov ecx, dword [esp + 0x48]
add esp, 0x14
push dword [edi + esi + 0x10]
push ecx
call fcn.0045354e
mov edi, dword [esp + 0x30]
pop ecx
pop ecx
and dword [esp + 0x14], 0
xor esi, esi
mov eax, dword [esp + 0x14]
mov cl, byte [esp + 0x10]
sub eax, esi
mov dword [esp + 0x14], eax
test eax, eax
jle 0x4532e4
test cl, cl
jne 0x4532c0
push 0x20
push eax
push dword [esp + 0x3c]
call fcn.00453497
add esp, 0xc
push esi
mov esi, dword [esp + 0x38]
push edi
push esi
call fcn.00453510
add esp, 0xc
cmp byte [esp + 0x10], 0
je 0x4532f3
push 0x20
push dword [esp + 0x18]
push esi
call fcn.00453497
jmp 0x4532f0
push esi
mov esi, dword [esp + 0x38]
push edi
push esi
call fcn.00453510
add esp, 0xc
mov eax, dword [esp + 0x70]
test eax, eax
je 0x453309
mov ecx, dword [esi]
mov edx, eax
call fcn.00451bec
and dword [esp + 0x70], 0
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
inc esi
mov ecx, dword [esp + 0x34]
movsx eax, byte [esi]
test eax, eax
jne 0x4522cc
jmp case.default.0x452587
push 1
push 0x5fb718
push dword [esp + 0x3c]
call fcn.00453510
add esp, 0xc
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0057086f
mov esp, ebp
pop ebp
ret