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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x124
mov eax, dword [0x5932e0]
xor eax, esp
mov dword [esp + 0x120], eax
push ebx
push esi
mov esi, edx
xor eax, eax
mov edx, ecx
mov dword [esp + 0x78], eax
xor ecx, ecx
mov dword [esp + 0xc], edx
push edi
mov edi, dword [ebp + 8]
test byte [edx + 0x15], 2
mov dword [esp + 0x2c], edi
mov dword [esp + 0x50], eax
mov dword [esp + 0x20], ecx
je 0x459ad6
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x50], eax
mov byte [esp + 0x17], 1
jmp 0x459ada
mov byte [esp + 0x17], al
movsx eax, byte [esi]
test eax, eax
je case.default.0x459ee2
movsd xmm0, qword [0x57ed60]
movsd xmm5, qword [0x57eb60]
movsd qword [esp + 0xa0], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x90], xmm0
movsd xmm0, qword [0x57eb48]
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [0x57eb40]
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [0x57eb50]
movsd qword [esp + 0xb8], xmm0
movsd xmm0, qword [0x57ec10]
movsd qword [esp + 0xc0], xmm0
movsd xmm0, qword [0x57ebe8]
movsd qword [esp + 0xc8], xmm0
movsd xmm0, qword [0x57eb30]
movsd qword [esp + 0xd0], xmm0
movsd xmm0, qword [0x57ebc8]
mov dword [esp + 0x8c], 3
movsd qword [esp + 0x80], xmm5
movsd qword [esp + 0xd8], xmm0
cmp eax, 0x25
je 0x459bfb
mov ecx, esi
mov dword [esp + 0x20], ecx
mov al, byte [esi + 1]
inc esi
test al, al
je 0x459bac
cmp al, 0x25
jne 0x459ba0
mov edi, dword [edx + 0x10]
mov dword [esp + 0x4c], esi
sub esi, ecx
add edi, esi
cmp edi, dword [edx + 8]
jb 0x459bcd
mov edx, ecx
mov ecx, dword [esp + 0x10]
push esi
call fcn.0045b3b0
add esp, 4
jmp 0x459be6
test esi, esi
je 0x459bea
mov eax, dword [edx + 4]
push esi
sub eax, esi
mov dword [edx + 0x10], edi
push ecx
add eax, edi
push eax
call fcn.00516840
add esp, 0xc
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x4c]
cmp byte [esi], 0
je case.default.0x459ee2
mov edi, dword [esp + 0x2c]
movsx ecx, byte [esi + 1]
inc esi
test ecx, ecx
je 0x45b1c8
mov byte [esp + 0x36], 0
mov byte [esp + 0x1f], 0
mov byte [esp + 0x37], 0
mov byte [esp + 0x2b], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0xf], 0
lea eax, [ecx - 0x20]
cmp eax, 0x10
ja case.0x459c35.34
movzx eax, byte [eax + 0x45b240]
jmp dword [eax*4 + 0x45b220]
mov byte [esp + 0xf], 1
jmp 0x459c6b
mov byte [esp + 0x16], 0x2b
jmp 0x459c6b
mov byte [esp + 0x16], 0x20
jmp 0x459c6b
mov byte [esp + 0x37], 1
jmp 0x459c6b
mov byte [esp + 0x1f], 1
jmp 0x459c6b
mov byte [esp + 0x36], 1
jmp 0x459c6b
mov byte [esp + 0x2b], 0x2c
movsx ecx, byte [esi + 1]
inc esi
test ecx, ecx
jne 0x459c26
mov dword [esp + 0x4c], esi
cmp ecx, 0x2a
jne 0x459d3f
cmp byte [esp + 0x17], 0
je 0x459cfe
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 4]
cmp dword [eax], edx
jg 0x459ca2
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov eax, dword [esp + 0x60]
jmp 0x459d07
mov eax, dword [eax + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov edx, dword [esp + 0x50]
mov dword [edx + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x459cc5
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esp + 0x64], edx
jmp 0x459d07
test al, 8
je 0x459cd8
movsd xmm0, qword [ecx]
call fcn.00477210
mov dword [esp + 0x64], edx
jmp 0x459d07
test al, 0x12
je 0x459ce7
call fcn.00477270
mov dword [esp + 0x64], edx
jmp 0x459d07
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x64], edx
jmp 0x459d07
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], eax
test eax, eax
jns 0x459d34
mov byte [esp + 0xf], 1
cmp eax, 0x80000001
jl 0x459d2c
movsx ecx, byte [esi + 1]
neg eax
inc esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x4c], esi
jmp 0x459d6a
mov dword [esp + 0x24], 0
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x4c], esi
jmp 0x459d6a
xor eax, eax
cmp ecx, 0x30
jl 0x459d61
cmp ecx, 0x39
jg 0x459d5d
lea eax, [eax + eax*4]
inc esi
lea eax, [eax - 0x18]
lea eax, [ecx + eax*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x459d46
mov dword [esp + 0x4c], esi
and eax, 0x7fffffff
mov dword [esp + 0x24], eax
cmp ecx, 0x2e
jne 0x459e57
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x4c], esi
cmp ecx, 0x2a
jne 0x459e2d
cmp byte [esp + 0x17], 0
je 0x459e06
mov edi, dword [esp + 0x50]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x459daa
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edi, dword [esp + 0x60]
jmp 0x459e10
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x459dc9
mov edx, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [esp + 0x64], edx
jmp 0x459e10
test al, 8
je 0x459dde
movsd xmm0, qword [ecx]
call fcn.00477210
mov edi, eax
mov dword [esp + 0x64], edx
jmp 0x459e10
test al, 0x12
je 0x459def
call fcn.00477270
mov edi, eax
mov dword [esp + 0x64], edx
jmp 0x459e10
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x64], edx
jmp 0x459e10
add edi, 4
mov dword [esp + 0x2c], edi
mov edi, dword [edi - 4]
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x38], edi
mov dword [esp + 0x4c], esi
test edi, edi
jns 0x459e5e
cmp edi, 0x80000001
jl 0x459e57
neg edi
jmp 0x459e5a
xor edi, edi
cmp ecx, 0x30
jl 0x459e4f
cmp ecx, 0x39
jg 0x459e4b
lea edi, [edi + edi*4]
inc esi
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x459e34
mov dword [esp + 0x4c], esi
and edi, 0x7fffffff
jmp 0x459e5a
or edi, 0xffffffff
mov dword [esp + 0x38], edi
cmp ecx, 0x6c
jne 0x459e86
movsx ecx, byte [esi + 1]
inc esi
mov byte [esp + 0x2a], 1
mov dword [esp + 0x4c], esi
cmp ecx, 0x6c
jne 0x459e8b
movsx ecx, byte [esi + 1]
inc esi
mov byte [esp + 0x2a], 2
mov dword [esp + 0x4c], esi
jmp 0x459e8b
mov byte [esp + 0x2a], 0
mov dword [esp + 0x54], 0x576140
xor esi, esi
mov byte [esp + 0x15], 0x11
mov edx, 0x576140
nop
movsx eax, byte [edx]
cmp ecx, eax
je 0x459ebd
add edx, 6
inc esi
cmp edx, 0x5761ca
jl 0x459ea0
mov dl, byte [esp + 0x15]
mov ecx, dword [esp + 0x54]
jmp 0x459ed6
lea eax, [esi + esi*2]
mov dl, byte [eax*2 + 0x576143]
lea ecx, [eax*2 + 0x576140]
mov dword [esp + 0x54], ecx
mov byte [esp + 0x15], dl
movzx eax, dl
cmp eax, 0x10
ja case.default.0x459ee2
jmp dword [eax*4 + 0x45b254]
mov al, 1
mov byte [esp + 0x2b], 0
jmp 0x459f01
mov al, byte [esp + 0x2a]
mov byte [esp + 0x2b], 0
jmp 0x459f01
mov al, byte [esp + 0x2a]
test byte [ecx + 2], 1
je 0x459ff8
cmp byte [esp + 0x17], 0
je 0x459f9b
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x459f3f
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov cl, byte [esp + 0x16]
mov dword [esp + 0x30], edx
jmp 0x45a091
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x459f5e
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
mov dword [esp + 0x30], edx
jmp 0x459fbd
test al, 8
je 0x459f73
movsd xmm0, qword [ecx]
call fcn.00477210
mov esi, eax
mov dword [esp + 0x30], edx
jmp 0x459fbd
test al, 0x12
je 0x459f84
call fcn.00477270
mov esi, eax
mov dword [esp + 0x30], edx
jmp 0x459fbd
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x30], edx
jmp 0x459fbd
mov ecx, dword [esp + 0x2c]
test al, al
je 0x459fb1
cmp al, 2
jne 0x459fb1
mov esi, dword [ecx]
add ecx, 8
mov edx, dword [ecx - 4]
jmp 0x459fb9
mov eax, dword [ecx]
add ecx, 4
cdq
mov esi, eax
mov dword [esp + 0x2c], ecx
test edx, edx
jg 0x459f32
jl 0x459fcf
test esi, esi
jae 0x459f32
test esi, esi
jne 0x459fe6
cmp edx, 0x80000000
jne 0x459fe6
mov dword [esp + 0x30], edx
mov cl, 0x2d
jmp 0x45a08d
neg esi
mov cl, 0x2d
adc edx, 0
neg edx
mov dword [esp + 0x30], edx
jmp 0x45a08d
cmp byte [esp + 0x17], 0
je 0x45a066
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x45a04f
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x45a029
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
mov dword [esp + 0x30], edx
jmp 0x45a08b
test al, 8
je 0x45a03e
movsd xmm0, qword [ecx]
call fcn.00477210
mov esi, eax
mov dword [esp + 0x30], edx
jmp 0x45a08b
test al, 0x12
je 0x45a04f
call fcn.00477270
mov esi, eax
mov dword [esp + 0x30], edx
jmp 0x45a08b
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x30], edx
jmp 0x45a08b
mov ecx, dword [esp + 0x2c]
test al, al
je 0x45a07c
cmp al, 2
jne 0x45a07c
mov esi, dword [ecx]
add ecx, 8
mov edx, dword [ecx - 4]
jmp 0x45a083
mov esi, dword [ecx]
add ecx, 4
xor edx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
xor cl, cl
mov byte [esp + 0x16], cl
mov eax, esi
or eax, edx
jne 0x45a09b
mov byte [esp + 0x37], al
cmp byte [esp + 0x36], 0
je 0x45a0b8
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x24]
setne al
sub ecx, eax
cmp edi, ecx
cmovl edi, ecx
mov dword [esp + 0x38], edi
cmp edi, 0x25
jge 0x45a0d2
lea eax, [esp + 0xe0]
mov dword [esp + 0x3c], 0x46
mov dword [esp + 0x18], eax
jmp 0x45a11e
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov dword [esp + 0x3c], eax
mov ecx, edx
mov eax, edi
cdq
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
adc ecx, edx
add eax, 0xa
mov dword [esp + 0x3c], eax
adc ecx, 0
push ecx
push eax
call fcn.00458f30
mov ecx, eax
mov dword [esp + 0x20], eax
add esp, 8
mov dword [esp + 0x7c], ecx
test ecx, ecx
je 0x45af18
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x3c]
dec ecx
add ecx, eax
cmp byte [esp + 0x15], 0xf
mov dword [esp + 0x20], ecx
jne 0x45a18a
push 0
push 0xa
push edx
push esi
call fcn.00515cb0
mov dword [esp + 0x58], eax
lea ecx, [eax + eax*4]
mov eax, esi
add ecx, ecx
sub eax, ecx
mov dword [esp + 0x40], eax
cmp eax, 4
jge 0x45a168
push 0
push 0xa
push edx
push dword [esp + 0x64]
call fcn.0054e710
cmp eax, 1
jne 0x45a16c
test edx, edx
jne 0x45a16c
xor edx, edx
jmp 0x45a170
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
mov al, byte [edx*2 + 0x576109]
mov byte [ecx - 1], al
sub ecx, 2
mov al, byte [edx*2 + str.thstndrd]
mov byte [ecx], al
mov edx, dword [esp + 0x54]
movzx eax, byte [edx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x58], eax
movzx eax, byte [edx + 1]
mov edi, dword [esp + 0x58]
cdq
mov dword [esp + 0x60], eax
mov eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x40], eax
push ebx
push eax
push dword [esp + 0x68]
dec ecx
push edx
push esi
mov dword [esp + 0x34], ecx
call fcn.00515ba0
mov dword [esp + 0x60], ebx
pop ebx
mov esi, eax
mov al, byte [edi + ecx]
mov ecx, dword [esp + 0x20]
mov byte [ecx], al
mov eax, dword [esp + 0x40]
test edx, edx
ja 0x45a1b2
jb 0x45a1e2
test esi, esi
jne 0x45a1b2
mov esi, dword [esp + 0x18]
mov eax, esi
mov edx, dword [esp + 0x3c]
sub eax, ecx
mov edi, dword [esp + 0x38]
dec edx
add edx, eax
cmp edx, edi
jge 0x45a20d
mov eax, edi
sub eax, edx
mov edx, edi
nop
dec ecx
mov byte [ecx], 0x30
sub eax, 1
jne 0x45a200
mov dword [esp + 0x20], ecx
cmp byte [esp + 0x2b], 0
je 0x45a255
lea eax, [edx - 1]
cdq
idiv dword [esp + 0x8c]
mov esi, eax
sub ecx, esi
mov dword [esp + 0x20], ecx
lea edi, [edx + 1]
xor edx, edx
test esi, esi
jle 0x45a251
lea eax, [esi + edx]
mov al, byte [eax + ecx]
mov byte [edx + ecx], al
sub edi, 1
jne 0x45a24c
mov al, byte [esp + 0x2b]
inc edx
dec esi
mov edi, 3
mov byte [edx + ecx], al
inc edx
test esi, esi
jg 0x45a230
mov esi, dword [esp + 0x18]
mov dl, byte [esp + 0x16]
test dl, dl
je 0x45a264
dec ecx
mov dword [esp + 0x20], ecx
mov byte [ecx], dl
cmp byte [esp + 0x37], 0
je 0x45a294
mov eax, dword [esp + 0x54]
mov al, byte [eax + 5]
test al, al
je 0x45a294
movzx eax, al
add eax, 0x576d9c
mov dl, byte [eax]
test dl, dl
je 0x45a294
dec ecx
lea eax, [eax + 1]
mov byte [ecx], dl
mov dl, byte [eax]
test dl, dl
jne 0x45a284
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x3c]
sub esi, ecx
dec esi
add esi, eax
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov al, byte [esp + 0xf]
sub edi, esi
mov dword [esp + 0x24], edi
test edi, edi
jle 0x45b128
test al, al
jne 0x45a307
mov eax, dword [edx + 0x10]
xor ecx, ecx
mov dword [esp + 0x18], eax
mov eax, edi
cdq
add dword [esp + 0x18], eax
adc ecx, edx
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 8]
js 0x45a2f5
jg 0x45a2de
cmp dword [esp + 0x18], eax
jb 0x45a2f5
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
call fcn.0045b2a0
mov edx, dword [esp + 0x10]
mov edi, eax
test edi, edi
jle 0x45a307
mov ecx, dword [edx + 0x10]
dec edi
mov eax, dword [edx + 4]
mov byte [ecx + eax], 0x20
inc dword [edx + 0x10]
test edi, edi
jg 0x45a2f5
mov edi, dword [edx + 0x10]
add edi, esi
cmp edi, dword [edx + 8]
jb 0x45b0b6
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
push esi
call fcn.0045b3b0
add esp, 4
jmp 0x45b0d3
cmp byte [esp + 0x17], 0
je 0x45a3af
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x45a39a
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 8
je 0x45a365
movsd xmm2, qword [ecx]
mov dl, byte [esp + 0x15]
movsd qword [esp + 0x58], xmm2
jmp 0x45a3c5
test al, 4
je 0x45a382
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
call fcn.0054f6d0
mov dl, byte [esp + 0x15]
movaps xmm2, xmm0
movsd qword [esp + 0x58], xmm2
jmp 0x45a3c5
test al, 0x12
je 0x45a39a
call fcn.004772e0
mov dl, byte [esp + 0x15]
movaps xmm2, xmm0
movsd qword [esp + 0x58], xmm0
jmp 0x45a3c5
movsd xmm2, qword [esp + 0x90]
mov dl, byte [esp + 0x15]
movsd qword [esp + 0x58], xmm2
jmp 0x45a3c5
mov ecx, dword [esp + 0x2c]
add ecx, 8
mov dword [esp + 0x2c], ecx
movsd xmm2, qword [ecx - 8]
movsd qword [esp + 0x58], xmm2
movsd xmm3, qword [esp + 0x90]
test edi, edi
mov eax, 6
cmovs edi, eax
comisd xmm3, xmm2
mov dword [esp + 0x38], edi
jbe 0x45a3f8
xorps xmm2, xmmword [esp + 0xa0]
mov dh, 0x2d
movsd qword [esp + 0x58], xmm2
mov byte [esp + 0x16], dh
jmp 0x45a3fc
mov dh, byte [esp + 0x16]
cmp dl, 3
jne 0x45a40a
test edi, edi
jle 0x45a40a
dec edi
mov dword [esp + 0x38], edi
movsd xmm1, qword [esp + 0xb0]
and edi, 0xfff
movsd xmm4, qword [esp + 0x98]
cmp edi, 8
jb 0x45a465
lea ecx, [edi - 8]
shr ecx, 3
inc ecx
mov eax, ecx
neg eax
lea edi, [edi + eax*8]
nop word [eax + eax]
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
mulsd xmm1, xmm4
sub ecx, 1
jne 0x45a440
test edi, edi
jle 0x45a479
nop dword [eax]
dec edi
mulsd xmm1, xmm4
test edi, edi
jg 0x45a470
cmp dl, 1
jne 0x45a48b
movaps xmm0, xmm1
addsd xmm2, xmm0
movsd qword [esp + 0x58], xmm2
movsd qword [esp + 0x60], xmm2
xor edi, edi
movsd xmm0, qword [esp + 0x60]
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0x60]
ucomisd xmm0, qword [esp + 0x40]
mov dword [esp + 0x30], edi
lahf
test ah, 0x44
jnp 0x45a4c6
mov ecx, 0x59a628
lea esi, [edi + 3]
mov dword [esp + 0x20], ecx
jmp 0x45a29d
comisd xmm2, xmm3
jbe 0x45a5fa
movsd xmm5, qword [esp + 0xc0]
comisd xmm2, xmm5
movsd xmm6, qword [esp + 0xb8]
movaps xmm3, xmm6
jb 0x45a510
nop dword [eax + eax]
cmp edi, 0x15e
jg 0x45a50c
mulsd xmm3, xmm5
add edi, 0x64
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jae 0x45a4f0
mov dword [esp + 0x30], edi
movsd xmm5, qword [esp + 0xc8]
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jb 0x45a542
cmp edi, 0x15e
jg 0x45a53e
movaps xmm3, xmm0
add edi, 0xa
mulsd xmm0, xmm5
comisd xmm2, xmm0
jae 0x45a526
mov dword [esp + 0x30], edi
movsd xmm5, qword [esp + 0x80]
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm2, xmm0
jb 0x45a572
cmp edi, 0x15e
jg 0x45a56e
movaps xmm3, xmm0
inc edi
mulsd xmm0, xmm5
comisd xmm2, xmm0
jae 0x45a558
mov dword [esp + 0x30], edi
divsd xmm2, xmm3
movsd xmm0, qword [esp + 0xd0]
comisd xmm0, xmm2
movsd qword [esp + 0x58], xmm2
jbe 0x45a5ab
movsd xmm3, qword [esp + 0xd8]
mulsd xmm2, xmm3
sub edi, 8
comisd xmm0, xmm2
ja 0x45a594
mov dword [esp + 0x30], edi
movsd qword [esp + 0x58], xmm2
comisd xmm6, xmm2
jbe 0x45a5c6
mulsd xmm2, xmm5
dec edi
comisd xmm6, xmm2
ja 0x45a5b1
mov dword [esp + 0x30], edi
movsd qword [esp + 0x58], xmm2
cmp edi, 0x15e
jle 0x45a603
xor eax, eax
mov byte [esp + 0xe0], dh
test dh, dh
lea ecx, [esp + 0xe0]
mov dword [esp + 0x20], ecx
setne al
mov dword [esp + eax + 0xe0], 0x666e49
lea esi, [eax + 3]
jmp 0x45a29d
movsd xmm5, qword [esp + 0x80]
lea esi, [esp + 0xe0]
cmp dl, 1
je 0x45a62e
addsd xmm2, xmm1
comisd xmm2, xmm5
movsd qword [esp + 0x58], xmm2
jb 0x45a62e
mulsd xmm2, xmm4
inc edi
mov dword [esp + 0x30], edi
movsd qword [esp + 0x58], xmm2
mov ecx, dword [esp + 0x38]
cmp dl, 3
jne 0x45a660
cmp byte [esp + 0x37], 0
sete byte [esp + 0x2b]
cmp edi, 0xfffffffc
jl 0x45a658
cmp edi, ecx
jg 0x45a658
sub ecx, edi
mov al, 1
mov dword [esp + 0x38], ecx
mov byte [esp + 0x15], al
jmp 0x45a66c
mov al, 2
mov byte [esp + 0x15], al
jmp 0x45a66c
mov al, byte [esp + 0x1f]
mov byte [esp + 0x2b], al
mov al, byte [esp + 0x15]
xor edx, edx
cmp al, 2
cmovne edx, edi
xor eax, eax
test edx, edx
mov dword [esp + 0x18], edx
cmovg eax, edx
cdq
mov dword [esp + 0x60], eax
mov eax, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x3c], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x24]
adc dword [esp + 0x3c], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x3c]
adc eax, edx
js 0x45a6c8
jg 0x45a6aa
cmp ecx, 0x37
jbe 0x45a6c8
add ecx, 0xf
adc eax, 0
push eax
push ecx
call fcn.00458f30
add esp, 8
mov dword [esp + 0x7c], eax
mov esi, eax
test eax, eax
je 0x45af18
movzx eax, byte [esp + 0x1f]
mov ecx, dword [esp + 0x38]
test ecx, ecx
mov dword [esp + 0x20], esi
lea eax, [eax + eax*4]
lea edx, [eax*2 + 0x10]
setg al
or al, byte [esp + 0x1f]
or al, byte [esp + 0x37]
mov byte [esp + 0x2a], al
mov al, byte [esp + 0x16]
mov dword [esp + 0x40], edx
test al, al
je 0x45a6ff
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x18]
movsd xmm1, qword [esp + 0x58]
movsd xmm5, qword [esp + 0x80]
test eax, eax
jns 0x45a71c
mov byte [esi], 0x30
inc esi
jmp 0x45a753
mov dword [esp + 0x18], eax
test edx, edx
jg 0x45a728
mov al, 0x30
jmp 0x45a73f
cvttsd2si eax, xmm1
dec edx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm5
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x18]
sub eax, 1
mov dword [esp + 0x18], eax
jns 0x45a720
mov dword [esp + 0x40], edx
cmp byte [esp + 0x2a], 0
je 0x45a75e
mov byte [esi], 0x2e
inc esi
inc eax
mov edi, eax
neg edi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x30]
test eax, eax
jns 0x45a83c
cmp dword [esp + 0x18], 8
jb 0x45a809
mov edi, dword [esp + 0x18]
and edi, 0x80000007
jns 0x45a78f
dec edi
or edi, 0xfffffff8
inc edi
movaps xmm0, xmmword [str.00000000000000000123456789ABCDEF]
neg edi
movaps xmm4, xmmword [0x57ec80]
xorps xmm2, xmm2
mov dword [esp + 0x18], edi
xorps xmm3, xmm3
mov edi, dword [esp + 0x30]
movaps xmmword [esp + 0x60], xmm0
movd xmm0, dword [esp + 0x60]
add eax, 8
movd dword [esi], xmm0
psubd xmm2, xmm4
movd xmm0, dword [esp + 0x60]
psubd xmm3, xmm4
movd dword [esi + 4], xmm0
add esi, 8
cmp eax, dword [esp + 0x18]
jl 0x45a7b2
paddd xmm2, xmm3
mov dword [esp + 0x18], eax
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd eax, xmm2
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], ecx
test eax, eax
jns 0x45a83c
neg eax
mov edi, esi
mov ecx, eax
mov dword [esp + 0x18], eax
mov edx, ecx
mov eax, 0x30303030
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x38]
mov eax, edx
mov edi, dword [esp + 0x30]
add esi, eax
mov edx, dword [esp + 0x40]
sub ecx, eax
test ecx, ecx
jle 0x45a867
dec ecx
test edx, edx
jg 0x45a849
mov al, 0x30
jmp 0x45a860
cvttsd2si eax, xmm1
dec edx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm5
mov byte [esi], al
inc esi
test ecx, ecx
jg 0x45a840
cmp byte [esp + 0x2b], 0
je 0x45a8a8
cmp byte [esp + 0x2a], 0
je 0x45a8a8
cmp byte [esi - 1], 0x30
lea eax, [esi - 1]
jne 0x45a88d
nop
mov esi, eax
lea eax, [esi - 1]
mov byte [esi], 0
cmp byte [eax], 0x30
je 0x45a880
cmp byte [esi - 1], 0x2e
lea eax, [esi - 1]
jne 0x45a8a8
cmp byte [esp + 0x1f], 0
je 0x45a8a3
mov byte [esi], 0x30
inc esi
jmp 0x45a8a8
mov esi, eax
mov byte [esi], 0
cmp byte [esp + 0x15], 2
jne 0x45a945
mov eax, dword [esp + 0x54]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
lea eax, [esi + 2]
mov dword [esp + 0x40], eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
test edi, edi
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0x18]
sets cl
lea ecx, [ecx*2 + 0x2b]
mov byte [esi + 1], cl
mov esi, dword [esp + 0x40]
cmp eax, 0x64
jl 0x45a916
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, esi
mov al, cl
add al, 0x30
mov byte [edx], al
lea esi, [edx + 1]
imul eax, ecx, 0x64
sub edi, eax
mov dword [esp + 0x18], edi
mov eax, 0x66666667
imul edi
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
add al, 0x30
mov byte [esi], al
mov al, cl
shl cl, 2
add al, cl
mov ecx, dword [esp + 0x18]
add al, al
sub cl, al
add cl, 0x30
mov byte [esi + 1], cl
add esi, 2
mov ecx, dword [esp + 0x20]
mov byte [esi], 0
sub esi, ecx
cmp byte [esp + 0x36], 0
je 0x45a29d
mov al, byte [esp + 0xf]
mov edi, dword [esp + 0x24]
test al, al
jne 0x45b0ad
cmp esi, edi
jge 0x45b0ad
mov edx, dword [esp + 0x24]
sub edi, esi
mov dword [esp + 0x60], edi
cmp edx, edi
jl 0x45a98e
mov esi, ecx
sub esi, edi
mov al, byte [esi + edx]
mov byte [edx + ecx], al
dec edx
cmp edx, edi
jge 0x45a983
xor eax, eax
cmp byte [esp + 0x16], al
setne al
test edi, edi
je 0x45a9b9
lea edi, [eax + ecx]
mov ecx, dword [esp + 0x60]
mov edx, ecx
mov eax, 0x30303030
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov esi, edi
jmp 0x45a2a1
cmp byte [esp + 0x17], 0
jne 0x45a9e2
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx - 4]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
mov ecx, dword [esp + 0x20]
xor edi, edi
xor esi, esi
jmp 0x45a2a1
lea ecx, [esp + 0xe0]
mov byte [esp + 0xe0], 0x25
mov dword [esp + 0x20], ecx
mov esi, 1
jmp 0x45a29d
cmp byte [esp + 0x17], 0
je 0x45aab8
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x45aaa6
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
je 0x45aaa6
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x45aa53
cmp byte [ecx + 0xa], 1
jne 0x45aa53
mov edx, dword [ecx + 0x10]
jmp 0x45aa61
test dl, 1
jne 0x45aaa6
mov dl, 1
call fcn.00477cc0
mov edx, eax
mov esi, 1
test edx, edx
je 0x45aaa6
mov cl, byte [edx]
mov byte [esp + 0xe0], cl
movsx ecx, cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x45ab82
mov cl, byte [edx + esi]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x45ab82
mov byte [esp + esi + 0xe0], cl
inc esi
cmp esi, 4
jl 0x45aa85
jmp 0x45ab82
mov byte [esp + 0xe0], 0
mov esi, 1
jmp 0x45ab82
mov ecx, dword [esp + 0x2c]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx - 4]
cmp ecx, 0x80
jae 0x45aad8
mov esi, 1
jmp 0x45ab7b
cmp ecx, 0x800
jae 0x45ab07
mov eax, ecx
mov esi, 2
shr eax, 6
and cl, 0x3f
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [esp + 0xe0], al
mov byte [esp + 0xe1], cl
jmp 0x45ab82
mov al, cl
mov edx, ecx
and al, 0x3f
shr edx, 6
add al, 0x80
and dl, 0x3f
mov byte [esp + 0x36], al
mov eax, ecx
shr eax, 0xc
cmp ecx, 0x10000
jae 0x45ab4d
and al, 0xf
mov esi, 3
sub al, 0x20
add dl, 0x80
mov byte [esp + 0xe0], al
mov al, byte [esp + 0x36]
mov byte [esp + 0xe1], dl
mov byte [esp + 0xe2], al
jmp 0x45ab82
shr ecx, 0x12
and al, 0x3f
add al, 0x80
and cl, 7
sub cl, 0x10
mov byte [esp + 0xe1], al
mov al, byte [esp + 0x36]
add dl, 0x80
mov byte [esp + 0xe2], dl
mov esi, 4
mov byte [esp + 0xe3], al
mov byte [esp + 0xe0], cl
cmp edi, 1
jle 0x45ac56
mov ecx, dword [esp + 0x24]
sub ecx, edi
mov eax, ecx
inc ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x24], ecx
cmp ecx, 1
jle 0x45ac06
cmp byte [esp + 0xf], 0
jne 0x45ac06
mov ecx, dword [esp + 0x10]
cdq
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x18], ecx
xor ecx, ecx
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
adc ecx, edx
mov edx, dword [eax + 8]
js 0x45abdc
jg 0x45abcd
cmp dword [esp + 0x18], edx
jb 0x45abdc
mov edx, dword [esp + 0x40]
mov ecx, eax
call fcn.0045b2a0
mov edx, eax
jmp 0x45abe0
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x45abfe
mov edi, dword [esp + 0x10]
mov ecx, dword [edi + 0x10]
dec edx
mov eax, dword [edi + 4]
mov byte [ecx + eax], 0x20
inc dword [edi + 0x10]
test edx, edx
jg 0x45abe8
mov edi, dword [esp + 0x38]
mov dword [esp + 0x24], 0
dec edi
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x10]
nop
mov eax, dword [edi + 0x10]
lea ecx, [eax + esi]
cmp ecx, dword [edi + 8]
jb 0x45ac2f
push esi
lea edx, [esp + 0xe4]
mov ecx, edi
call fcn.0045b3b0
add esp, 4
jmp 0x45ac4f
test esi, esi
je 0x45ac4f
push esi
lea eax, [esp + 0xe4]
mov dword [edi + 0x10], ecx
push eax
mov eax, dword [edi + 4]
sub eax, esi
add eax, ecx
push eax
call fcn.00516840
add esp, 0xc
sub dword [esp + 0x40], 1
jne 0x45ac10
lea ecx, [esp + 0xe0]
mov dword [esp + 0x20], ecx
jmp 0x45afa4
cmp byte [esp + 0x17], 0
je 0x45acc9
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x45ac7e
xor ecx, ecx
mov dl, 5
jmp 0x45acd7
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x45ac92
mov dl, 5
jmp 0x45acd7
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x45acb1
cmp byte [ecx + 0xa], 1
jne 0x45acb1
mov ecx, dword [ecx + 0x10]
mov dl, 5
jmp 0x45acd7
test dl, 1
je 0x45acbc
xor ecx, ecx
mov dl, 5
jmp 0x45acd7
mov dl, 1
call fcn.00477cc0
mov ecx, eax
mov dl, 5
jmp 0x45acd7
mov ecx, dword [esp + 0x2c]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx - 4]
mov dword [esp + 0x20], ecx
test ecx, ecx
jne 0x45acea
mov ecx, 0x59f688
mov dword [esp + 0x20], ecx
jmp 0x45ad4b
cmp dl, 6
jne 0x45ad4b
mov esi, dword [esp + 0x10]
cmp dword [esi + 0x10], 0
jne 0x45ad45
cmp dword [esi + 0xc], 0
je 0x45ad45
cmp dword [esp + 0x24], 0
jne 0x45ad45
test edi, edi
jns 0x45ad45
mov dword [esi + 4], ecx
mov edx, ecx
mov ecx, dword [esi]
call fcn.00459120
mov ecx, dword [esp + 0x20]
mov edx, ecx
mov dword [esi + 8], eax
lea edi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x45ad22
sub edx, edi
mov edi, dword [esp + 0x24]
and edx, 0x7fffffff
mov dword [esi + 0x10], edx
mov edx, esi
or byte [edx + 0x15], 4
xor esi, esi
jmp 0x45a2a5
mov eax, ecx
mov dword [esp + 0x7c], eax
test edi, edi
js 0x45ada7
cmp byte [esp + 0x1f], 0
je 0x45ad89
mov esi, ecx
test edi, edi
jle 0x45ad82
nop dword [eax]
mov al, byte [esi]
dec edi
test al, al
je 0x45ad82
inc esi
cmp al, 0xc0
jb 0x45ad7e
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
jne 0x45ad7e
mov al, byte [esi + 1]
inc esi
and al, 0xc0
cmp al, 0x80
je 0x45ad74
test edi, edi
jg 0x45ad60
sub esi, ecx
jmp 0x45af99
xor esi, esi
test edi, edi
jle 0x45a29d
cmp byte [esi + ecx], 0
je 0x45a29d
inc esi
cmp esi, edi
jl 0x45ad93
jmp 0x45a29d
mov esi, ecx
lea edx, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x45adb0
sub esi, edx
and esi, 0x7fffffff
jmp 0x45af99
cmp dl, 0xe
mov eax, 0x27
mov ecx, 0x22
cmove eax, ecx
cmp byte [esp + 0x17], 0
mov dword [esp + 0x54], eax
je 0x45ae4b
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x45adf8
mov dl, byte [esp + 0x15]
mov dword [esp + 0x40], 0
jmp 0x45ae65
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x45ae0e
mov dl, byte [esp + 0x15]
jmp 0x45ae59
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x45ae2f
cmp byte [ecx + 0xa], 1
jne 0x45ae2f
mov ecx, dword [ecx + 0x10]
mov dl, byte [esp + 0x15]
jmp 0x45ae59
test dl, 1
je 0x45ae3c
mov dl, byte [esp + 0x15]
xor ecx, ecx
jmp 0x45ae59
mov dl, 1
call fcn.00477cc0
mov dl, byte [esp + 0x15]
mov ecx, eax
jmp 0x45ae59
mov ecx, dword [esp + 0x2c]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx - 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], ecx
test ecx, ecx
jne 0x45ae79
cmp dl, 0xa
mov ecx, 0x59a620
mov eax, 0x59a618
cmovne ecx, eax
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x38]
xor eax, eax
xor edi, edi
mov dword [esp + 0x18], eax
test esi, esi
je 0x45aed9
mov dh, byte [esp + 0x1f]
nop dword [eax]
mov dl, byte [edi + ecx]
test dl, dl
je 0x45aed5
inc eax
cmp dl, byte [esp + 0x54]
cmovne eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
test dh, dh
je 0x45aecf
and dl, 0xc0
cmp dl, 0xc0
jne 0x45aecf
mov al, byte [ecx + edi + 1]
and al, dl
cmp al, 0x80
jne 0x45aecb
nop dword [eax + eax]
mov al, byte [ecx + edi + 2]
inc edi
and al, 0xc0
cmp al, 0x80
je 0x45aec0
mov eax, dword [esp + 0x18]
inc edi
sub esi, 1
jne 0x45ae90
mov dl, byte [esp + 0x15]
cmp dword [esp + 0x40], 0
je 0x45aeed
mov dword [esp + 0x18], 1
cmp dl, 0xa
je 0x45aef5
mov dword [esp + 0x18], 0
add eax, 3
add eax, edi
cmp eax, 0x46
jle 0x45af3c
cdq
push edx
push eax
call fcn.00458f30
add esp, 8
mov dword [esp + 0x7c], eax
mov dword [esp + 0x20], eax
mov ecx, eax
test eax, eax
jne 0x45af47
mov eax, dword [esp + 0x10]
mov byte [eax + 0x14], 1
mov dword [eax + 8], 0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.00514e1d
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0xe0]
mov dword [esp + 0x20], ecx
xor esi, esi
cmp dword [esp + 0x18], esi
je 0x45af5a
mov eax, dword [esp + 0x54]
mov esi, 1
mov byte [ecx], al
xor edx, edx
mov dword [esp + 0x40], edx
test edi, edi
jle 0x45af86
mov eax, dword [esp + 0x3c]
mov dl, byte [edx + eax]
mov byte [esi + ecx], dl
inc esi
cmp dl, byte [esp + 0x54]
jne 0x45af79
mov byte [esi + ecx], dl
inc esi
mov edx, dword [esp + 0x40]
inc edx
mov dword [esp + 0x40], edx
cmp edx, edi
jl 0x45af68
cmp dword [esp + 0x18], 0
je 0x45af95
mov eax, dword [esp + 0x54]
mov byte [esi + ecx], al
inc esi
mov byte [esi + ecx], 0
cmp byte [esp + 0x1f], 0
je 0x45a29d
mov edi, dword [esp + 0x24]
test edi, edi
jle 0x45a2a1
lea edx, [esi - 1]
test edx, edx
js 0x45a2a1
nop dword [eax + eax]
lea eax, [edx + ecx]
mov al, byte [eax]
lea ecx, [edi + 1]
and al, 0xc0
cmp al, 0x80
cmovne ecx, edi
sub edx, 1
mov edi, ecx
mov ecx, dword [esp + 0x20]
jns 0x45afc0
jmp 0x45a2a1
mov edx, dword [esp + 0x10]
test byte [edx + 0x15], 1
je case.default.0x459ee2
mov ecx, dword [esp + 0x2c]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov eax, dword [ecx - 4]
test eax, eax
je 0x45b019
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x45b019
mov edx, dword [eax]
push ecx
mov ecx, dword [esp + 0x14]
call fcn.0045b3f0
mov edx, dword [esp + 0x14]
add esp, 4
mov ecx, dword [esp + 0x20]
xor edi, edi
xor esi, esi
jmp 0x45a2a5
mov esi, dword [esp + 0x10]
test byte [esi + 0x15], 1
je case.default.0x459ee2
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx]
lea eax, [ecx + 8]
mov dword [esp + 0x58], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x60], edx
lea edi, [eax + eax*4]
add edi, edi
mov edx, dword [edx + edi*8 + 0xc]
test edx, edx
je 0x45b089
mov ecx, esi
call fcn.0045b440
mov eax, dword [esi + 0x10]
lea edx, [eax + 1]
cmp edx, dword [esi + 8]
jb 0x45b07a
push 1
mov edx, 0x59a614
mov ecx, esi
call fcn.0045b3b0
add esp, 4
jmp 0x45b089
mov ecx, dword [esi + 4]
mov dword [esi + 0x10], edx
mov al, byte [0x59a614]
mov byte [ecx + edx - 1], al
mov edx, dword [esp + 0x60]
mov ecx, esi
mov edx, dword [edx + edi*8 + 0x10]
call fcn.0045b440
mov ecx, dword [esp + 0x58]
xor edi, edi
mov dword [esp + 0x2c], ecx
xor esi, esi
mov ecx, dword [esp + 0x20]
jmp 0x45a2a1
mov edx, dword [esp + 0x10]
jmp 0x45a2a9
test esi, esi
je 0x45b0d7
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x20]
sub eax, esi
push esi
push ecx
add eax, edi
mov dword [edx + 0x10], edi
push eax
call fcn.00516840
add esp, 0xc
mov edx, dword [esp + 0x10]
cmp byte [esp + 0xf], 0
je 0x45b160
mov esi, dword [edx + 0x10]
xor ecx, ecx
mov edi, dword [esp + 0x24]
mov eax, edi
cdq
add esi, eax
adc ecx, edx
mov edx, dword [esp + 0x10]
js 0x45b114
jg 0x45b0ff
cmp esi, dword [edx + 8]
jb 0x45b114
mov ecx, dword [esp + 0x10]
mov edx, edi
call fcn.0045b2a0
mov edx, dword [esp + 0x10]
mov edi, eax
test edi, edi
jle 0x45b160
mov ecx, dword [edx + 0x10]
dec edi
mov eax, dword [edx + 4]
mov byte [ecx + eax], 0x20
inc dword [edx + 0x10]
test edi, edi
jg 0x45b114
jmp 0x45b160
mov edi, dword [edx + 0x10]
add edi, esi
cmp edi, dword [edx + 8]
jb 0x45b143
mov edx, ecx
mov ecx, dword [esp + 0x10]
push esi
call fcn.0045b3b0
add esp, 4
jmp 0x45b15c
test esi, esi
je 0x45b160
mov eax, dword [edx + 4]
push esi
sub eax, esi
mov dword [edx + 0x10], edi
push ecx
add eax, edi
push eax
call fcn.00516840
add esp, 0xc
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x7c]
test edi, edi
je 0x45b1b3
mov ecx, dword [edx]
test ecx, ecx
je 0x45b1a0
cmp dword [ecx + 0x1d8], 0
je 0x45b180
mov edx, edi
call fcn.00459240
jmp 0x45b1a9
cmp edi, dword [ecx + 0x128]
jb 0x45b1a0
cmp edi, dword [ecx + 0x12c]
jae 0x45b1a0
mov eax, dword [ecx + 0x124]
mov dword [edi], eax
mov dword [ecx + 0x124], edi
jmp 0x45b1ad
push edi
call fcn.00459190
add esp, 4
mov edx, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x7c], eax
mov esi, dword [esp + 0x4c]
inc esi
movsx eax, byte [esi]
test eax, eax
je case.default.0x459ee2
mov edi, dword [esp + 0x2c]
jmp 0x459b95
mov esi, dword [edx + 0x10]
inc esi
cmp esi, dword [edx + 8]
jb 0x45b1f9
mov ecx, dword [esp + 0x10]
mov edx, 0x59a62c
push 1
call fcn.0045b3b0
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.00514e1d
mov esp, ebp
pop ebp
ret
mov ecx, dword [edx + 4]
mov dword [edx + 0x10], esi
mov al, byte [0x59a62c]
mov byte [ecx + esi - 1], al
mov ecx, dword [esp + 0x12c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00514e1d
mov esp, ebp
pop ebp
ret