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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x118
mov eax, dword [0x559940]
xor eax, esp
mov dword [esp + 0x114], eax
mov eax, dword [ebp + 8]
push esi
mov dword [esp + 0x48], edx
xor esi, esi
mov dl, byte [ecx + 0x15]
push edi
xor edi, edi
mov dword [esp + 0x24], ecx
and dl, 2
mov dword [esp + 0x64], 0
mov byte [esp + 0x12], dl
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x54], esi
mov dword [esp + 0x1c], edi
je 0x405e01
mov esi, dword [eax]
mov dword [esp + 0x54], esi
cmp byte [esp + 0x12], 0
lea esi, [eax + 4]
cmove esi, eax
movsx eax, byte [edx]
mov dword [esp + 0x14], esi
test eax, eax
je case.default.0x4062a9
movsd xmm0, qword [0x54f280]
lea edi, [ecx + 8]
movsd qword [esp + 0x90], xmm0
lea esi, [ecx + 0x10]
xorps xmm0, xmm0
mov dword [esp + 0x68], edi
movsd qword [esp + 0x80], xmm0
movsd xmm0, qword [0x54f120]
movsd qword [esp + 0xa0], xmm0
movsd xmm0, qword [0x54f118]
movsd qword [esp + 0x88], xmm0
movsd xmm0, qword [0x54f128]
movsd qword [esp + 0xa8], xmm0
movsd xmm0, qword [0x54f1f0]
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [0x54f1c0]
movsd qword [esp + 0xb8], xmm0
movsd xmm0, qword [0x54f138]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [0x54f110]
movsd qword [esp + 0xc0], xmm0
movsd xmm0, qword [0x54f1a0]
movsd qword [esp + 0xc8], xmm0
nop word [eax + eax]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x24]
cmp eax, 0x25
je 0x405f5b
mov edi, edx
mov dword [esp + 0x1c], edi
mov al, byte [edx + 1]
inc edx
test al, al
je 0x405ef3
cmp al, 0x25
jne 0x405ee7
mov eax, edx
mov dword [esp + 0x4c], edx
sub eax, edi
lea esi, [ecx + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esi]
add eax, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
lea eax, [ecx + 8]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc]
cmp eax, dword [ecx + 8]
jb 0x405f2c
push dword [esp + 0x2c]
mov edx, edi
call fcn.004077d0
add esp, 4
jmp 0x405f4e
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x405f52
mov edx, dword [esp + 0xc]
push eax
mov eax, dword [ecx + 4]
sub eax, dword [esp + 0x30]
add eax, edx
mov dword [esi], edx
push edi
push eax
call fcn.004f79b0
add esp, 0xc
mov edx, dword [esp + 0x4c]
cmp byte [edx], 0
je case.default.0x4062a9
movsx ecx, byte [edx + 1]
inc edx
test ecx, ecx
je 0x40752b
xor al, al
mov byte [esp + 0x53], al
mov byte [esp + 0x4b], al
mov byte [esp + 0x33], al
mov byte [esp + 0x1b], al
mov byte [esp + 0x11], al
mov byte [esp + 0x2b], al
lea eax, [ecx - 0x20]
cmp eax, 0x10
ja case.0x405f91.34
movzx eax, byte [eax + 0x4075a0]
jmp dword [eax*4 + 0x407580]
mov byte [esp + 0x2b], 1
jmp 0x405fc7
mov byte [esp + 0x11], 0x2b
jmp 0x405fc7
mov byte [esp + 0x11], 0x20
jmp 0x405fc7
mov byte [esp + 0x33], 1
jmp 0x405fc7
mov byte [esp + 0x4b], 1
jmp 0x405fc7
mov byte [esp + 0x53], 1
jmp 0x405fc7
mov byte [esp + 0x1b], 0x2c
movsx ecx, byte [edx + 1]
inc edx
test ecx, ecx
jne 0x405f82
mov dword [esp + 0x4c], edx
cmp ecx, 0x2a
jne 0x4060ad
cmp byte [esp + 0x12], 0
je 0x40606a
mov eax, dword [esp + 0x54]
mov esi, dword [eax + 4]
cmp dword [eax], esi
jg 0x406002
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x40]
jmp 0x406075
mov eax, dword [eax + 8]
mov ecx, dword [eax + esi*4]
lea eax, [esi + 1]
mov esi, dword [esp + 0x54]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x406025
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x44], ecx
jmp 0x406075
test al, 8
je 0x40603e
movsd xmm0, qword [ecx]
call fcn.004283b0
mov ecx, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], ecx
jmp 0x406075
test al, 0x12
je 0x406053
call fcn.004283e0
mov ecx, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], ecx
jmp 0x406075
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x44], ecx
jmp 0x406075
mov eax, dword [esp + 0x20]
add dword [esp + 0x14], 4
mov eax, dword [eax]
mov dword [esp + 0x34], eax
test eax, eax
jns 0x4060a2
mov byte [esp + 0x2b], 1
cmp eax, 0x80000001
jl 0x40609a
movsx ecx, byte [edx + 1]
neg eax
inc edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x4c], edx
jmp 0x4060e0
mov dword [esp + 0x34], 0
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x4c], edx
jmp 0x4060e0
xor eax, eax
cmp ecx, 0x30
jl 0x4060d7
mov edi, eax
cmp ecx, 0x39
ja 0x4060cd
lea edi, [edi + edi*4]
inc edx
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [edx]
cmp ecx, 0x30
jge 0x4060b6
mov dword [esp + 0x34], edi
mov eax, edi
mov dword [esp + 0x4c], edx
and eax, 0x7fffffff
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
mov esi, eax
cmp ecx, 0x2e
jne 0x406209
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x4c], edx
cmp ecx, 0x2a
jne 0x4061db
cmp byte [esp + 0x12], 0
je 0x4061b5
mov ecx, dword [esp + 0x54]
mov esi, dword [ecx + 4]
cmp dword [ecx], esi
jg 0x406129
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov esi, dword [esp + 0x40]
jmp 0x4061be
mov eax, dword [ecx + 8]
mov ecx, dword [eax + esi*4]
lea eax, [esi + 1]
mov esi, dword [esp + 0x54]
mov dword [esi + 4], eax
movzx eax, word [ecx + 8]
test al, 4
je 0x406154
mov eax, dword [ecx + 4]
mov esi, dword [ecx]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
jmp 0x4061c2
test al, 8
je 0x406177
movsd xmm0, qword [ecx]
call fcn.004283b0
mov esi, eax
mov eax, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
jmp 0x4061c2
test al, 0x12
je 0x406196
call fcn.004283e0
mov esi, eax
mov dword [esp + 0x3c], eax
mov eax, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
jmp 0x4061c2
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
jmp 0x4061c2
mov esi, dword [esi]
add eax, 4
mov dword [esp + 0x14], eax
mov dword [esp + 0x3c], esi
movsx ecx, byte [edx + 1]
inc edx
mov dword [esp + 0x4c], edx
test esi, esi
jns 0x406210
cmp esi, 0x80000001
jl 0x406209
neg esi
jmp 0x40620c
xor esi, esi
cmp ecx, 0x30
jl 0x406201
cmp ecx, 0x39
ja 0x4061f9
lea esi, [esi + esi*4]
inc edx
lea esi, [esi - 0x18]
lea esi, [ecx + esi*2]
movsx ecx, byte [edx]
cmp ecx, 0x30
jge 0x4061e2
mov eax, dword [esp + 0x14]
mov dword [esp + 0x4c], edx
and esi, 0x7fffffff
jmp 0x40620c
or esi, 0xffffffff
mov dword [esp + 0x3c], esi
mov dword [esp + 8], eax
cmp ecx, 0x6c
jne 0x40623c
movsx ecx, byte [edx + 1]
inc edx
mov byte [esp + 0x1a], 1
mov dword [esp + 0x4c], edx
cmp ecx, 0x6c
jne 0x406241
movsx ecx, byte [edx + 1]
inc edx
mov byte [esp + 0x1a], 2
mov dword [esp + 0x4c], edx
jmp 0x406241
mov byte [esp + 0x1a], 0
xor eax, eax
mov dword [esp + 0x2c], 0x54e640
mov byte [esp + 0x13], 0x11
mov edx, 0x54e640
mov dword [esp + 0x20], eax
nop dword [eax]
movsx eax, byte [edx]
cmp ecx, eax
je 0x406280
inc dword [esp + 0x20]
add edx, 6
cmp edx, 0x54e6ca
jl 0x406260
mov ch, byte [esp + 0x13]
mov edx, dword [esp + 0x2c]
jmp 0x40629d
mov eax, dword [esp + 0x20]
lea eax, [eax + eax*2]
mov ch, byte [eax*2 + 0x54e643]
lea edx, [eax*2 + 0x54e640]
mov dword [esp + 0x2c], edx
mov byte [esp + 0x13], ch
movzx eax, ch
cmp eax, 0x10
ja case.default.0x4062a9
jmp dword [eax*4 + 0x4075b4]
mov al, 1
mov byte [esp + 0x1b], 0
jmp 0x4062c8
mov al, byte [esp + 0x1a]
mov byte [esp + 0x1b], 0
jmp 0x4062c8
mov al, byte [esp + 0x1a]
test byte [edx + 2], 1
je 0x4063e7
cmp byte [esp + 0x12], 0
je 0x406382
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x40630a
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov dl, byte [esp + 0x11]
mov dword [esp + 8], eax
mov dword [esp + 0x38], ecx
jmp 0x4064a8
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 0x406335
mov eax, dword [ecx]
mov dword [esp + 8], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x38]
jmp 0x4063a4
test al, 8
je 0x40634e
movsd xmm0, qword [ecx]
call fcn.004283b0
mov dword [esp + 0x38], edx
mov ecx, edx
mov dword [esp + 8], eax
jmp 0x4063a4
test al, 0x12
je 0x406363
call fcn.004283e0
mov dword [esp + 0x38], edx
mov ecx, edx
mov dword [esp + 8], eax
jmp 0x4063a4
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [esp + 8], eax
jmp 0x4063a4
mov edx, dword [esp + 8]
test al, al
je 0x40639a
cmp al, 2
mov eax, dword [edx]
jne 0x40639c
add dword [esp + 0x14], 8
mov ecx, dword [edx + 4]
jmp 0x4063a4
mov eax, dword [edx]
add dword [esp + 0x14], 4
cdq
mov ecx, edx
test ecx, ecx
jg 0x4062f9
jl 0x4063b6
test eax, eax
jae 0x4062f9
test eax, eax
jne 0x4063d1
cmp ecx, 0x80000000
jne 0x4063d1
mov dword [esp + 0x38], ecx
mov dl, 0x2d
mov dword [esp + 8], eax
jmp 0x4064a4
neg eax
mov dl, 0x2d
mov dword [esp + 8], eax
adc ecx, 0
neg ecx
mov dword [esp + 0x38], ecx
jmp 0x4064a4
cmp byte [esp + 0x12], 0
je 0x406475
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jle 0x406456
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 0x406428
mov eax, dword [ecx]
mov dword [esp + 8], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x38]
jmp 0x4064a2
test al, 8
je 0x406441
movsd xmm0, qword [ecx]
call fcn.004283b0
mov dword [esp + 0x38], edx
mov ecx, edx
mov dword [esp + 8], eax
jmp 0x4064a2
test al, 0x12
je 0x406456
call fcn.004283e0
mov dword [esp + 0x38], edx
mov ecx, edx
mov dword [esp + 8], eax
jmp 0x4064a2
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [esp + 8], eax
jmp 0x4064a2
mov edx, dword [esp + 8]
test al, al
je 0x406491
cmp al, 2
mov eax, dword [edx]
mov dword [esp + 8], eax
jne 0x406497
add dword [esp + 0x14], 8
mov ecx, dword [edx + 4]
jmp 0x40649e
mov eax, dword [edx]
mov dword [esp + 8], eax
add dword [esp + 0x14], 4
xor ecx, ecx
mov dword [esp + 0x38], ecx
xor dl, dl
mov byte [esp + 0x11], dl
or eax, ecx
jne 0x4064b0
mov byte [esp + 0x33], al
cmp byte [esp + 0x53], 0
je 0x4064cd
mov ecx, dword [esp + 0x34]
xor eax, eax
test dl, dl
setne al
sub ecx, eax
cmp esi, ecx
cmovl esi, ecx
mov dword [esp + 0x3c], esi
cmp esi, 0x25
jge 0x4064e8
mov edi, 0x46
lea eax, [esp + 0xd0]
mov dword [esp + 0x20], edi
mov dword [esp + 0xc], eax
jmp 0x406528
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov edi, eax
mov ecx, edx
mov eax, esi
cdq
add edi, eax
adc ecx, edx
add edi, 0xa
mov dword [esp + 0x20], edi
adc ecx, 0
push ecx
push edi
call fcn.004051e0
mov ecx, eax
mov dword [esp + 0x14], eax
add esp, 8
mov dword [esp + 0x64], ecx
test ecx, ecx
je 0x407505
dec edi
add edi, eax
cmp byte [esp + 0x13], 0xf
mov dword [esp + 0x1c], edi
jne 0x4065ed
mov eax, dword [esp + 8]
mov edx, 0xcccccccd
mov ecx, 0xcccccccd
lea edi, [edx - 1]
mul edx
mov dword [esp + 0x40], eax
mov esi, edx
mov eax, dword [esp + 8]
mul edi
mov edi, eax
mov dword [esp + 0x78], edx
mov eax, dword [esp + 0x38]
mul ecx
mov ecx, eax
mov dword [esp + 0x68], edx
mov eax, dword [esp + 0x38]
mov edx, 0xcccccccc
mul edx
add ecx, esi
mov esi, dword [esp + 8]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x68]
adc edx, 0
mov dword [esp + 0x58], eax
add edi, ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x58]
adc ecx, 0
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x40]
adc eax, eax
add edi, edx
adc ecx, eax
shrd edi, ecx, 3
shr ecx, 3
lea eax, [edi + edi*4]
add eax, eax
sub esi, eax
cmp esi, 4
jge 0x4065d1
push 0
push 0xa
push ecx
push edi
call fcn.004f50f0
cmp eax, 1
jne 0x4065d3
test edx, edx
jne 0x4065d3
xor esi, esi
mov edi, dword [esp + 0x1c]
mov al, byte [esi*2 + 0x54e635]
mov byte [edi - 1], al
sub edi, 2
mov al, byte [esi*2 + str.thstndrd]
mov byte [edi], al
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 8]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x40], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x68], ecx
push ecx
push dword [esp + 0x20]
dec edi
push eax
push esi
call fcn.004f50f0
push dword [esp + 0x68]
mov ecx, dword [esp + 0x44]
push dword [esp + 0x20]
push dword [esp + 0x40]
mov al, byte [eax + ecx]
push esi
mov byte [edi], al
call fcn.004f5080
mov ecx, dword [esp + 0x68]
mov esi, eax
mov eax, edx
mov dword [esp + 0x38], eax
test eax, eax
ja 0x406615
jb 0x406653
test esi, esi
jne 0x406615
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x3c]
sub eax, edi
mov dword [esp + 0x1c], edi
lea ecx, [edx - 1]
add ecx, eax
cmp ecx, esi
jge 0x406681
mov eax, esi
sub eax, ecx
mov ecx, esi
dec edi
mov byte [edi], 0x30
sub eax, 1
jne 0x406674
mov dword [esp + 0x1c], edi
cmp byte [esp + 0x1b], 0
je 0x4066c7
lea eax, [ecx - 1]
mov ecx, 3
cdq
idiv ecx
xor ecx, ecx
mov esi, eax
inc edx
sub edi, esi
mov dword [esp + 0x1c], edi
test esi, esi
jle 0x4066c3
lea eax, [esi + ecx]
mov al, byte [eax + edi]
mov byte [ecx + edi], al
sub edx, 1
jne 0x4066be
mov al, byte [esp + 0x1b]
inc ecx
dec esi
mov edx, 3
mov byte [ecx + edi], al
inc ecx
test esi, esi
jg 0x4066a2
mov edx, dword [esp + 0x20]
mov al, byte [esp + 0x11]
test al, al
je 0x4066d6
dec edi
mov dword [esp + 0x1c], edi
mov byte [edi], al
cmp byte [esp + 0x33], 0
je 0x406706
mov eax, dword [esp + 0x2c]
mov al, byte [eax + 5]
test al, al
je 0x406706
movzx eax, al
add eax, 0x54b6d0
mov cl, byte [eax]
test cl, cl
je 0x406706
dec edi
lea eax, [eax + 1]
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x4066f6
mov dword [esp + 0x1c], edi
mov esi, dword [esp + 0xc]
sub esi, edi
dec esi
add esi, edx
jmp 0x4070fd
cmp byte [esp + 0x12], 0
je 0x4067a3
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x406735
movsd xmm1, qword [esp + 0x80]
jmp 0x4067b0
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, 8
je 0x406759
movsd xmm1, qword [ecx]
mov ch, byte [esp + 0x13]
movsd qword [esp + 0x58], xmm1
jmp 0x4067b6
test al, 4
je 0x406776
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
call fcn.004f5280
mov ch, byte [esp + 0x13]
movaps xmm1, xmm0
movsd qword [esp + 0x58], xmm1
jmp 0x4067b6
test al, 0x12
je 0x40678e
call fcn.00428450
mov ch, byte [esp + 0x13]
movaps xmm1, xmm0
movsd qword [esp + 0x58], xmm0
jmp 0x4067b6
movsd xmm1, qword [esp + 0x80]
mov ch, byte [esp + 0x13]
movsd qword [esp + 0x58], xmm1
jmp 0x4067b6
mov edx, dword [esp + 8]
add dword [esp + 0x14], 8
movsd xmm1, qword [edx]
movsd qword [esp + 0x58], xmm1
movsd xmm3, qword [esp + 0x80]
test esi, esi
mov eax, 6
cmovs esi, eax
comisd xmm3, xmm1
mov dword [esp + 0x3c], esi
jbe 0x4067e6
xorps xmm1, xmmword [esp + 0x90]
movsd qword [esp + 0x58], xmm1
mov byte [esp + 0x11], 0x2d
cmp ch, 3
jne 0x4067f4
test esi, esi
je 0x4067f4
dec esi
mov dword [esp + 0x3c], esi
movsd xmm2, qword [esp + 0xa0]
and esi, 0xfff
movsd xmm4, qword [esp + 0x88]
cmp esi, 8
jb 0x406849
lea ecx, [esi - 8]
shr ecx, 3
inc ecx
mov eax, ecx
neg eax
lea esi, [esi + eax*8]
nop
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
mulsd xmm2, xmm4
sub ecx, 1
jne 0x406820
mov ch, byte [esp + 0x13]
test esi, esi
jle 0x406859
nop dword [eax]
dec esi
mulsd xmm2, xmm4
test esi, esi
jg 0x406850
cmp ch, 1
jne 0x40686b
movaps xmm0, xmm2
addsd xmm1, xmm0
movsd qword [esp + 0x58], xmm1
movsd qword [esp + 0x40], xmm1
xor edx, edx
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x78], xmm0
movsd xmm0, qword [esp + 0x40]
ucomisd xmm0, qword [esp + 0x78]
mov dword [esp + 8], edx
lahf
test ah, 0x44
jnp 0x4068a6
mov edi, 0x5466e0
lea esi, [edx + 3]
mov dword [esp + 0x1c], edi
jmp 0x4070fd
comisd xmm1, xmm3
jbe 0x4069dd
movsd xmm5, qword [esp + 0xb0]
comisd xmm1, xmm5
movsd xmm6, qword [esp + 0xa8]
movaps xmm3, xmm6
jb 0x4068f0
nop dword [eax + eax]
cmp edx, 0x15e
jg 0x4068ec
mulsd xmm3, xmm5
add edx, 0x64
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm1, xmm0
jae 0x4068d0
mov dword [esp + 8], edx
movsd xmm5, qword [esp + 0xb8]
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm1, xmm0
jb 0x406922
cmp edx, 0x15e
jg 0x40691e
movaps xmm3, xmm0
add edx, 0xa
mulsd xmm0, xmm5
comisd xmm1, xmm0
jae 0x406906
mov dword [esp + 8], edx
movsd xmm5, qword [esp + 0x70]
movaps xmm0, xmm3
mulsd xmm0, xmm5
comisd xmm1, xmm0
jb 0x40694f
cmp edx, 0x15e
jg 0x40694b
movaps xmm3, xmm0
inc edx
mulsd xmm0, xmm5
comisd xmm1, xmm0
jae 0x406935
mov dword [esp + 8], edx
divsd xmm1, xmm3
movsd xmm0, qword [esp + 0xc0]
comisd xmm0, xmm1
movsd qword [esp + 0x58], xmm1
jbe 0x406988
movsd xmm3, qword [esp + 0xc8]
mulsd xmm1, xmm3
sub edx, 8
comisd xmm0, xmm1
ja 0x406971
mov dword [esp + 8], edx
movsd qword [esp + 0x58], xmm1
comisd xmm6, xmm1
jbe 0x4069a5
nop
mulsd xmm1, xmm5
dec edx
comisd xmm6, xmm1
ja 0x406990
mov dword [esp + 8], edx
movsd qword [esp + 0x58], xmm1
cmp edx, 0x15e
jle 0x4069e3
mov cl, byte [esp + 0x11]
lea edi, [esp + 0xd0]
xor eax, eax
mov byte [esp + 0xd0], cl
test cl, cl
mov dword [esp + 0x1c], edi
setne al
mov dword [esp + eax + 0xd0], 0x666e49
lea esi, [eax + 3]
jmp 0x4070fd
movsd xmm5, qword [esp + 0x70]
lea esi, [esp + 0xd0]
cmp ch, 1
je 0x406a40
addsd xmm1, xmm2
comisd xmm1, xmm5
movsd qword [esp + 0x58], xmm1
jb 0x406a0e
mulsd xmm1, xmm4
inc edx
mov dword [esp + 8], edx
movsd qword [esp + 0x58], xmm1
cmp ch, 3
jne 0x406a40
cmp byte [esp + 0x33], 0
mov ecx, dword [esp + 0x3c]
sete byte [esp + 0x1b]
cmp edx, 0xfffffffc
jl 0x406a38
cmp edx, ecx
jg 0x406a38
sub ecx, edx
mov al, 1
mov dword [esp + 0x3c], ecx
mov byte [esp + 0x13], al
jmp 0x406a50
mov al, 2
mov byte [esp + 0x13], al
jmp 0x406a50
mov cl, byte [esp + 0x4b]
mov al, byte [esp + 0x13]
mov byte [esp + 0x1b], cl
mov ecx, dword [esp + 0x3c]
xor edi, edi
cmp al, 2
cmovne edi, edx
xor eax, eax
test edi, edi
mov dword [esp + 0x20], edi
cmovg eax, edi
cdq
mov edi, eax
mov dword [esp + 0x40], edx
mov eax, ecx
mov ecx, dword [esp + 0x40]
cdq
add edi, eax
mov eax, dword [esp + 0x34]
adc ecx, edx
cdq
add edi, eax
adc ecx, edx
js 0x406aa4
jg 0x406a86
cmp edi, 0x37
jbe 0x406aa4
add edi, 0xf
adc ecx, 0
push ecx
push edi
call fcn.004051e0
add esp, 8
mov dword [esp + 0x64], eax
mov esi, eax
test eax, eax
je 0x407505
movzx eax, byte [esp + 0x4b]
mov edi, esi
mov dword [esp + 0x1c], edi
lea eax, [eax + eax*4]
lea edx, [eax*2 + 0x10]
mov eax, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0xc], edx
setg cl
or cl, byte [esp + 0x4b]
or cl, byte [esp + 0x33]
mov byte [esp + 0x1a], cl
mov cl, byte [esp + 0x11]
test cl, cl
je 0x406add
mov byte [esi], cl
inc esi
mov ecx, dword [esp + 0x20]
test ecx, ecx
jns 0x406aeb
mov byte [esi], 0x30
inc esi
jmp 0x406b3a
movsd xmm1, qword [esp + 0x58]
movsd xmm2, qword [esp + 0x70]
mov dword [esp + 0x20], ecx
nop dword [eax + eax]
test edx, edx
jg 0x406b08
mov cl, 0x30
jmp 0x406b20
cvttsd2si ecx, xmm1
dec edx
movd xmm0, ecx
add cl, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], cl
inc esi
mov ecx, dword [esp + 0x20]
sub ecx, 1
mov dword [esp + 0x20], ecx
jns 0x406b00
mov dword [esp + 0xc], edx
movsd qword [esp + 0x58], xmm1
cmp byte [esp + 0x1a], 0
je 0x406b45
mov byte [esi], 0x2e
inc esi
add ecx, 1
jns 0x406b6e
neg ecx
push ecx
sub eax, ecx
mov dword [esp + 0x44], ecx
push 0x30
push esi
mov dword [esp + 0x48], eax
call fcn.004f7f30
mov eax, dword [esp + 0x48]
add esp, 0xc
add esi, dword [esp + 0x40]
mov edx, dword [esp + 0xc]
test eax, eax
jle 0x406ba8
dec eax
test edx, edx
jg 0x406b7b
mov cl, 0x30
jmp 0x406ba1
movsd xmm1, qword [esp + 0x58]
dec edx
cvttsd2si ecx, xmm1
movd xmm0, ecx
add cl, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [esp + 0x70]
movsd qword [esp + 0x58], xmm1
mov byte [esi], cl
inc esi
test eax, eax
jg 0x406b72
cmp byte [esp + 0x1b], 0
je 0x406be1
cmp byte [esp + 0x1a], 0
je 0x406be1
cmp byte [esi - 1], 0x30
jne 0x406bca
nop dword [eax]
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x406bc0
cmp byte [esi - 1], 0x2e
jne 0x406be1
cmp byte [esp + 0x4b], 0
je 0x406bdd
mov byte [esi], 0x30
inc esi
jmp 0x406be1
dec esi
mov byte [esi], 0
cmp byte [esp + 0x13], 2
jne 0x406c8a
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 8]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
lea eax, [esi + 2]
mov dword [esp + 0xc], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
test ecx, ecx
mov dword [esp + 0x2c], eax
sets cl
lea ecx, [ecx*2 + 0x2b]
mov byte [esi + 1], cl
mov esi, dword [esp + 0xc]
cmp eax, 0x64
jl 0x406c57
mov eax, 0x51eb851f
imul dword [esp + 0x2c]
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
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x2c], ecx
jmp 0x406c5b
mov ecx, dword [esp + 0x2c]
mov eax, 0x66666667
imul ecx
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 + 0x2c]
add al, al
sub cl, al
add cl, 0x30
mov byte [esi + 1], cl
add esi, 2
mov byte [esi], 0
sub esi, edi
cmp byte [esp + 0x53], 0
je 0x4070fd
cmp byte [esp + 0x2b], 0
jne 0x4070fd
mov eax, dword [esp + 0x34]
cmp esi, eax
jge 0x4070fd
mov edx, eax
mov ecx, eax
sub edx, esi
cmp eax, edx
jl 0x406ccb
mov esi, edi
sub esi, edx
nop
mov al, byte [esi + ecx]
mov byte [ecx + edi], al
dec ecx
cmp ecx, edx
jge 0x406cc0
xor eax, eax
cmp byte [esp + 0x11], al
setne al
test edx, edx
je 0x406ce6
push edx
add eax, edi
push 0x30
push eax
call fcn.004f7f30
add esp, 0xc
mov esi, dword [esp + 0x34]
jmp 0x4070fd
cmp byte [esp + 0x12], 0
jne 0x4073ae
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x24]
add dword [esp + 0x14], 4
mov ecx, dword [edx]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x4073ae
lea edi, [esp + 0xd0]
mov byte [esp + 0xd0], 0x25
mov dword [esp + 0x1c], edi
mov esi, 1
jmp 0x4070fd
cmp byte [esp + 0x12], 0
je 0x406d8e
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jle 0x406d84
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
test ecx, ecx
je 0x406d84
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x406d6f
cmp byte [ecx + 0xa], 1
jne 0x406d6f
mov eax, dword [ecx + 0x10]
jmp 0x406d7b
test dl, 1
jne 0x406d84
mov dl, 1
call fcn.00428e00
test eax, eax
je 0x406d84
movsx eax, byte [eax]
jmp 0x406d99
mov dword [esp + 0x2c], 0
jmp 0x406d9d
mov edx, dword [esp + 8]
add dword [esp + 0x14], 4
mov eax, dword [edx]
mov dword [esp + 0x2c], eax
cmp esi, 1
jle 0x406e7d
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x24]
sub eax, esi
mov edx, eax
inc eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x34], eax
cmp eax, 1
jle 0x406e18
cmp byte [esp + 0x2b], 0
jne 0x406e18
mov eax, dword [edi + 0x10]
xor ecx, ecx
mov dword [esp + 0xc], eax
mov eax, edx
cdq
add dword [esp + 0xc], eax
mov eax, dword [edi + 8]
adc ecx, edx
js 0x406df9
jg 0x406de6
cmp dword [esp + 0xc], eax
jb 0x406df9
mov edx, dword [esp + 0x20]
mov ecx, edi
call fcn.00407600
mov edx, eax
test edx, edx
jle 0x406e12
jmp 0x406e00
mov edx, dword [esp + 0x20]
nop dword [eax]
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 0x406e00
xor edx, edx
mov dword [esp + 0x34], edx
mov eax, dword [edi + 0x10]
dec esi
mov dword [esp + 0xc], eax
xor ecx, ecx
mov eax, esi
cdq
add dword [esp + 0xc], eax
mov eax, dword [edi + 8]
adc ecx, edx
js 0x406e47
jg 0x406e38
cmp dword [esp + 0xc], eax
jb 0x406e47
mov edx, esi
mov ecx, edi
call fcn.00407600
mov esi, eax
test esi, esi
jle 0x406e7d
mov edx, dword [esp + 0x2c]
nop dword [eax + eax]
mov ecx, dword [edi + 0x10]
dec esi
mov eax, dword [edi + 4]
mov byte [ecx + eax], dl
inc dword [edi + 0x10]
test esi, esi
jg 0x406e50
lea edi, [esp + 0xd0]
mov byte [esp + 0xd0], dl
mov esi, 1
mov dword [esp + 0x1c], edi
jmp 0x4070fd
mov edx, dword [esp + 0x2c]
lea edi, [esp + 0xd0]
mov esi, 1
mov byte [esp + 0xd0], dl
mov dword [esp + 0x1c], edi
jmp 0x4070fd
cmp byte [esp + 0x12], 0
je 0x406f16
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x406eb9
xor edi, edi
mov ch, 5
mov dword [esp + 0x1c], edi
jmp 0x406f25
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
test ecx, ecx
jne 0x406ed3
xor edi, edi
mov ch, 5
mov dword [esp + 0x1c], edi
jmp 0x406f25
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x406ef6
cmp byte [ecx + 0xa], 1
jne 0x406ef6
mov edi, dword [ecx + 0x10]
mov ch, 5
mov dword [esp + 0x1c], edi
jmp 0x406f25
test dl, 1
je 0x406f05
xor edi, edi
mov ch, 5
mov dword [esp + 0x1c], edi
jmp 0x406f25
mov dl, 1
call fcn.00428e00
mov edi, eax
mov dword [esp + 0x1c], eax
mov ch, 5
jmp 0x406f25
mov edx, dword [esp + 8]
add dword [esp + 0x14], 4
mov edi, dword [edx]
mov dword [esp + 0x1c], edi
test edi, edi
jne 0x406f34
mov edi, 0x5466e4
mov dword [esp + 0x1c], edi
jmp 0x406f42
mov eax, dword [esp + 0x64]
cmp ch, 6
cmove eax, edi
mov dword [esp + 0x64], eax
test esi, esi
js 0x406f68
mov ecx, dword [esp + 0x3c]
xor esi, esi
test ecx, ecx
jle 0x4070fd
cmp byte [esi + edi], 0
je 0x4070fd
inc esi
cmp esi, ecx
jl 0x406f54
jmp 0x4070fd
mov esi, edi
lea ecx, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x406f70
sub esi, ecx
and esi, 0x7fffffff
jmp 0x4070fd
cmp ch, 0xe
mov eax, 0x27
mov edx, 0x22
cmove eax, edx
cmp byte [esp + 0x12], 0
mov dword [esp + 0x20], eax
je 0x407007
mov edi, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x406fb4
mov dword [esp + 0xc], 0
jmp 0x40701e
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
test ecx, ecx
jne 0x406fcc
mov ch, byte [esp + 0x13]
xor eax, eax
jmp 0x407012
movzx edx, word [ecx + 8]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x406fed
cmp byte [ecx + 0xa], 1
jne 0x406fed
mov eax, dword [ecx + 0x10]
mov ch, byte [esp + 0x13]
jmp 0x407012
test dl, 1
je 0x406ffa
mov ch, byte [esp + 0x13]
xor eax, eax
jmp 0x407012
mov dl, 1
call fcn.00428e00
mov ch, byte [esp + 0x13]
jmp 0x407012
mov edx, dword [esp + 8]
add dword [esp + 0x14], 4
mov eax, dword [edx]
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
test eax, eax
jne 0x407032
cmp ch, 0xa
mov eax, str.NULL
mov edx, str._NULL_
cmovne eax, edx
mov dword [esp + 8], eax
xor edx, edx
xor edi, edi
mov dword [esp + 0x2c], edx
test esi, esi
je 0x407061
nop
mov cl, byte [edx + eax]
test cl, cl
je 0x40705d
inc edx
lea eax, [edi + 1]
cmp cl, byte [esp + 0x20]
cmovne eax, edi
mov edi, eax
mov eax, dword [esp + 8]
sub esi, 1
jne 0x407040
mov dword [esp + 0x2c], edx
cmp dword [esp + 0xc], 0
je 0x407075
mov dword [esp + 0xc], 1
cmp ch, 0xa
je 0x40707d
mov dword [esp + 0xc], 0
lea eax, [edx + 3]
add eax, edi
cmp eax, 0x46
jle 0x4070aa
cdq
push edx
push eax
call fcn.004051e0
add esp, 8
mov dword [esp + 0x64], eax
mov dword [esp + 0x1c], eax
mov edi, eax
test eax, eax
je 0x407505
mov edx, dword [esp + 0x2c]
jmp 0x4070b5
lea edi, [esp + 0xd0]
mov dword [esp + 0x1c], edi
xor esi, esi
cmp dword [esp + 0xc], esi
je 0x4070c8
mov eax, dword [esp + 0x20]
mov esi, 1
mov byte [edi], al
xor eax, eax
test edx, edx
jle 0x4070ea
nop
mov ecx, dword [esp + 8]
mov cl, byte [eax + ecx]
mov byte [esi + edi], cl
inc esi
cmp cl, byte [esp + 0x20]
jne 0x4070e5
mov byte [esi + edi], cl
inc esi
inc eax
cmp eax, edx
jl 0x4070d0
cmp dword [esp + 0xc], 0
je 0x4070f9
mov eax, dword [esp + 0x20]
mov byte [esi + edi], al
inc esi
mov byte [esi + edi], 0
mov edx, dword [esp + 0x34]
sub edx, esi
mov dword [esp + 0x34], edx
test edx, edx
jle 0x4073b0
cmp byte [esp + 0x2b], 0
jne 0x407174
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov dword [esp + 0x20], edx
mov eax, dword [eax + 0x10]
mov dword [esp + 0xc], eax
mov eax, edx
cdq
add dword [esp + 0xc], eax
adc ecx, edx
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 8]
js 0x40715a
jg 0x407141
cmp dword [esp + 0xc], eax
jb 0x40715a
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
call fcn.00407600
mov edx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
test eax, eax
jle 0x407178
mov edi, dword [esp + 0x20]
nop
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 0x407160
jmp 0x407178
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x10]
lea ecx, [edx + 0x10]
add eax, esi
mov dword [esp + 8], ecx
lea edi, [edx + 8]
mov dword [esp + 0x40], eax
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x1c]
cmp eax, dword [edx + 8]
jb 0x4071af
push esi
mov esi, dword [esp + 0x28]
mov edx, edi
mov ecx, esi
call fcn.004077d0
mov ecx, dword [esp + 0xc]
add esp, 4
jmp 0x4071d1
test esi, esi
je 0x4071cd
mov dword [ecx], eax
mov eax, dword [edx + 4]
push esi
sub eax, esi
add eax, dword [esp + 0x44]
push edi
push eax
call fcn.004f79b0
mov ecx, dword [esp + 0x14]
add esp, 0xc
mov esi, dword [esp + 0x24]
cmp byte [esp + 0x2b], 0
je 0x407220
mov eax, dword [ecx]
xor ecx, ecx
mov edi, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov eax, edi
cdq
add dword [esp + 0xc], eax
mov eax, dword [esp + 0x68]
adc ecx, edx
mov eax, dword [eax]
js 0x40720c
jg 0x4071fd
cmp dword [esp + 0xc], eax
jb 0x40720c
mov edx, edi
mov ecx, esi
call fcn.00407600
mov edi, eax
test edi, edi
jle 0x407220
mov edx, dword [esp + 8]
mov ecx, dword [edx]
dec edi
mov eax, dword [esi + 4]
mov byte [ecx + eax], 0x20
inc dword [edx]
test edi, edi
jg 0x407210
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 8]
jmp 0x40741f
mov ecx, dword [esp + 0x24]
test byte [ecx + 0x15], 1
je case.default.0x4062a9
mov edx, dword [esp + 8]
add dword [esp + 0x14], 4
mov eax, dword [edx]
test eax, eax
je 0x4073ae
mov esi, dword [eax + 4]
test esi, esi
je 0x4073ae
mov edx, dword [ecx + 0x10]
mov eax, dword [eax]
add edx, esi
mov dword [esp + 0xc], eax
push esi
cmp edx, dword [ecx + 8]
jb 0x40727d
mov edx, eax
call fcn.004077d0
add esp, 4
jmp 0x4073ae
mov eax, dword [ecx + 4]
push dword [esp + 0x10]
sub eax, esi
mov dword [ecx + 0x10], edx
add eax, edx
push eax
call fcn.004f79b0
add esp, 0xc
jmp 0x4073ae
mov esi, dword [esp + 0x24]
test byte [esi + 0x15], 1
je case.default.0x4062a9
mov ecx, dword [esp + 0x14]
lea eax, [ecx + 8]
mov ecx, dword [ecx]
mov dword [esp + 0x58], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x20], ecx
lea eax, [eax + eax*4]
shl eax, 4
mov dword [esp + 0x40], eax
mov eax, dword [eax + ecx + 0xc]
mov dword [esp + 0xc], eax
test eax, eax
je 0x407347
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4072d6
sub ecx, edx
mov edx, dword [esi + 0x10]
and ecx, 0x3fffffff
add edx, ecx
cmp edx, dword [esi + 8]
jb 0x407300
mov edx, dword [esp + 0xc]
push ecx
mov ecx, esi
call fcn.004077d0
add esp, 4
jmp 0x40731c
test ecx, ecx
je 0x40731c
mov eax, dword [esi + 4]
push ecx
push dword [esp + 0x10]
sub eax, ecx
mov dword [esi + 0x10], edx
add eax, edx
push eax
call fcn.004f79b0
add esp, 0xc
mov ecx, dword [esi + 0x10]
inc ecx
cmp ecx, dword [esi + 8]
jb 0x407338
push 1
mov edx, 0x5466f8
mov ecx, esi
call fcn.004077d0
add esp, 4
jmp 0x407343
mov eax, dword [esi + 4]
mov dword [esi + 0x10], ecx
mov byte [eax + ecx - 1], 0x2e
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x40]
mov eax, dword [eax + ecx + 0x10]
mov dword [esp + 0xc], eax
test eax, eax
jne 0x40735b
xor ecx, ecx
jmp 0x40736f
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407360
sub ecx, edx
and ecx, 0x3fffffff
mov edx, dword [esi + 0x10]
add edx, ecx
cmp edx, dword [esi + 8]
jb 0x40738a
mov edx, dword [esp + 0xc]
push ecx
mov ecx, esi
call fcn.004077d0
add esp, 4
jmp 0x4073a6
test ecx, ecx
je 0x4073a6
mov eax, dword [esi + 4]
push ecx
push dword [esp + 0x10]
sub eax, ecx
mov dword [esi + 0x10], edx
add eax, edx
push eax
call fcn.004f79b0
add esp, 0xc
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
xor esi, esi
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
lea edx, [ecx + 0x10]
add eax, esi
mov dword [esp + 8], edx
mov dword [esp + 0x40], eax
lea edi, [ecx + 8]
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x1c]
cmp eax, dword [ecx + 8]
jb 0x4073f1
push esi
mov edx, edi
call fcn.004077d0
mov eax, dword [esp + 0x6c]
add esp, 4
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x68], eax
jmp 0x40741f
test esi, esi
je 0x40741d
mov dword [edx], eax
mov eax, dword [ecx + 4]
push esi
sub eax, esi
add eax, dword [esp + 0x44]
push edi
push eax
call fcn.004f79b0
mov eax, dword [esp + 0x74]
add esp, 0xc
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x68], eax
jmp 0x40741f
mov esi, edx
mov edx, dword [esp + 0x64]
test edx, edx
je 0x4074e1
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
test eax, eax
je 0x40747a
cmp dword [eax + 0x1d0], 0
je 0x40744a
mov ecx, eax
call fcn.00405430
jmp 0x4074d9
cmp edx, dword [eax + 0x128]
jb 0x40747a
cmp edx, dword [eax + 0x12c]
jae 0x40747a
mov eax, dword [eax + 0x124]
mov dword [edx], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], edi
mov dword [eax + 0x124], edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
jmp 0x4074d9
cmp dword [0x55a418], 0
je 0x4074cf
mov eax, dword [0x560268]
test eax, eax
je 0x40749a
push eax
call dword [0x55a474]
mov edx, dword [esp + 0x68]
add esp, 4
push edx
call dword [0x55a450]
sub dword [0x560070], eax
add esp, 4
dec dword [0x560094]
push dword [esp + 0x64]
call dword [0x55a448]
mov eax, dword [0x560268]
add esp, 4
test eax, eax
je 0x4074d9
push eax
call dword [0x55a47c]
jmp 0x4074d6
push edx
call dword [0x55a448]
add esp, 4
mov dword [esp + 0x64], 0
mov edx, dword [esp + 0x4c]
inc edx
movsx eax, byte [edx]
test eax, eax
jne 0x405ed0
pop edi
pop esi
mov ecx, dword [esp + 0x114]
xor ecx, esp
call fcn.004f49c2
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x24]
mov byte [eax + 0x14], 1
mov eax, dword [esp + 0x68]
mov dword [eax], 0
pop edi
pop esi
mov ecx, dword [esp + 0x114]
xor ecx, esp
call fcn.004f49c2
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x68]
mov edx, dword [esi]
inc edx
cmp edx, dword [eax]
jb 0x40755d
mov ecx, dword [esp + 0x24]
mov edx, 0x5466dc
push 1
call fcn.004077d0
add esp, 4
pop edi
pop esi
mov ecx, dword [esp + 0x114]
xor ecx, esp
call fcn.004f49c2
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x24]
mov dword [esi], edx
mov eax, dword [eax + 4]
mov byte [eax + edx - 1], 0x25
mov ecx, dword [esp + 0x11c]
pop edi
pop esi
xor ecx, esp
call fcn.004f49c2
mov esp, ebp
pop ebp
ret