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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov esi, esp
mov eax, dword [0x72a00c]
xor eax, ebp
mov dword [esi + 0x98], eax
movzx ebx, byte [ecx + 0x2c]
xor edi, edi
inc edi
xor eax, eax
cmp ebx, 2
setne al
lea eax, [eax + eax*4 + 5]
cmovb eax, edi
mov dword [esi + 0x3c], eax
mov dword [esi + 0x50], edx
test dx, dx
je 0x602fc7
mov dword [esi + 0x24], 0
mov eax, dword [ecx + 8]
test eax, eax
mov edx, dword [esi + 0x3c]
je 0x602fd1
mov eax, dword [eax]
mov dword [esi + 0x24], eax
jmp 0x602fd1
mov dword [esi + 0x24], 0
mov edx, dword [esi + 0x3c]
mov dword [esi + 0x10], ecx
mov eax, dword [ecx]
mov dword [esi + 0x5c], eax
lea eax, [ebx*4 + 0x20]
imul eax, edx
add eax, dword [esi + 0x24]
lea ecx, [eax + eax]
lea eax, [eax*2 + 3]
and eax, 0xfffffffc
call fcn.0066f040
mov edi, esp
and edi, 0xfffffff0
mov esp, edi
push ecx
push 0xff
push edi
mov dword [esi + 0x20], ebx
mov ebx, edx
call fcn.006719e0
add esp, 0xc
mov edx, dword [esi + 0x20]
shl ebx, 5
lea eax, [edi + ebx]
xorps xmm0, xmm0
movaps xmmword [edi + ebx], xmm0
movaps xmmword [edi + ebx + 0x10], xmm0
mov dword [esi + 0xc], eax
mov dword [esi + 8], ebx
add ebx, eax
mov dword [esi + 0x2c], edi
lea eax, [edi + 0x18]
mov ecx, dword [esi + 0x3c]
lea ecx, [ecx*2 + 1]
mov dword [eax], ebx
lea ebx, [ebx + edx*4]
add eax, 0x20
dec ecx
cmp ecx, 1
ja 0x603040
mov dword [esi + 0x44], ebx
mov eax, dword [esi + 0x24]
test eax, eax
je 0x60309e
mov ebx, eax
add eax, eax
push eax
push 0
push dword [esi + 0x44]
call fcn.006719e0
add esp, 0xc
mov eax, dword [esi + 0x5c]
mov ecx, dword [eax + 0x84]
cmp ecx, 0x30
mov eax, 0x30
cmovb eax, ecx
xor ecx, ecx
mov edi, dword [esi + 0x20]
mov edx, edi
neg edx
sbb ecx, ecx
or cl, bl
mov ebx, edi
mov edi, dword [esi + 0x2c]
mov edx, dword [esi + 8]
mov byte [edi + edx + 0x16], cl
mov ecx, edx
mov edx, dword [esi + 0xc]
jmp 0x6030c5
mov eax, dword [esi + 0x5c]
mov ecx, dword [eax + 0x84]
cmp ecx, 0x30
mov eax, 0x30
cmovb eax, ecx
mov dword [esi + 0x44], 0
mov ebx, dword [esi + 0x20]
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 0x2c]
mov ecx, dword [esi + 8]
mov word [edi + ecx + 0x10], ax
test ebx, ebx
je 0x603871
mov eax, dword [esi + 0x3c]
cmp eax, 3
mov ecx, 2
cmovae ecx, eax
mov dword [esi + 0x84], ecx
mov eax, dword [esi + 0x50]
add eax, 0xfffffff6
mov dword [esi + 0x78], eax
xor ecx, ecx
inc ecx
mov dword [esi + 0x58], 0
mov dword [esi + 8], 0
mov dword [esi + 0x54], 0
mov dword [esi + 0x4c], 0
mov ebx, dword [esi + 0x10]
mov edx, dword [esi + 0x2c]
test ecx, ecx
mov dword [esi + 0x48], edx
jg 0x60312a
mov dword [esi + 0x18], 0
mov edi, dword [esi + 8]
jmp 0x603814
mov edi, edx
mov dword [esi + 0x64], ecx
mov eax, dword [esi + 0x4c]
lea eax, [eax*4]
mov dword [esi + 0x80], eax
lea eax, [edx + 0x34]
mov dword [esi + 0x7c], eax
mov dword [esi + 0x18], 0
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x68], 0
mov edi, dword [esi + 8]
mov ebx, dword [ebx + 0x40]
test ebx, ebx
je 0x6037fe
mov dword [esi + 0x1c], ecx
mov dword [esi + 8], edi
xor edi, edi
dec edi
mov dword [esi + 0x8c], edi
mov dword [esi + 0x88], edi
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esi + 0x2c], eax
mov ecx, edx
xor ecx, edi
and ecx, dword [ebx + 4]
xor eax, edi
and eax, dword [ebx]
or eax, ecx
jne 0x6031a6
mov ecx, dword [ebx + 8]
mov edi, edx
mov edx, dword [ebx + 0xc]
mov eax, edx
and eax, edi
mov dword [esi + 0x74], ecx
and ecx, dword [esi + 0x2c]
or ecx, eax
je 0x6031b8
mov edi, dword [esi + 8]
mov ecx, dword [esi + 0x1c]
mov ebx, dword [ebx + 0x3c]
test ebx, ebx
jne 0x603167
jmp 0x6037fe
mov dword [esi + 0x6c], edi
mov dword [esi + 0x70], edx
test byte [ebx + 0x2d], 0x40
mov ecx, dword [esi + 0x1c]
movzx eax, word [ecx + 0x10]
je 0x6031d6
cmp ax, 3
jge 0x6031d6
mov edi, dword [esi + 8]
jmp 0x6031ac
movzx edx, word [ebx + 0x14]
mov dword [esi + 0x40], eax
add dx, ax
movzx eax, word [ebx + 0x12]
movsx edi, ax
movsx ecx, dx
cmp di, cx
jge 0x603204
mov eax, edi
add edi, 0x31
cmp edi, ecx
jl 0x603200
lea edi, [eax + 0x1f]
cmp edi, ecx
jge 0x603223
inc edx
mov ecx, edx
jmp 0x603241
mov dword [esi + 0x14], eax
lea edx, [ecx + 0x31]
cmp edx, edi
jge 0x603216
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x14]
jmp 0x603244
lea edx, [ecx + 0x1f]
cmp edx, edi
jge 0x603232
mov ecx, dword [esi + 0x14]
inc ecx
jmp 0x603241
mov edx, ecx
sub edx, eax
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ecx, eax
jmp 0x603241
mov edx, edi
sub edx, ecx
movzx ecx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add edi, ecx
mov ecx, edi
mov eax, dword [esi + 0x1c]
mov dword [esi + 0x14], ecx
movzx edx, word [eax + 0x14]
movsx eax, cx
movsx ecx, dx
cmp ax, cx
jge 0x60326a
lea edi, [eax + 0x31]
cmp edi, ecx
jl 0x603265
lea edi, [eax + 0x1f]
cmp edi, ecx
jge 0x60327d
inc edx
mov dword [esi + 0x14], edx
jmp 0x60329f
lea edx, [ecx + 0x31]
cmp edx, eax
jl 0x60329f
lea edx, [ecx + 0x1f]
cmp edx, eax
jge 0x60328f
inc dword [esi + 0x14]
jmp 0x60329f
mov edx, ecx
sub edx, eax
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ecx, eax
mov dword [esi + 0x14], ecx
jmp 0x60329f
mov edx, eax
sub edx, ecx
movzx ecx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add eax, ecx
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x40]
add dx, word [ebx + 0x16]
mov dword [esi + 0x40], edx
mov edi, ebx
mov ebx, dword [esi + 0x1c]
mov dh, byte [ebx + 0x16]
test dh, dh
mov dword [esi + 0x38], edi
js 0x6032d2
mov dl, dh
movsd xmm0, qword [ebx + 8]
movsd qword [esi + 0x88], xmm0
mov byte [esi + 0x34], dh
jmp 0x603314
xor eax, eax
mov dword [esi + 0x8c], eax
mov dword [esi + 0x88], eax
mov ecx, dword [esi + 0x10]
movzx eax, word [ecx + 0x28]
mov dword [esi + 0x34], eax
mov edx, dword [ecx + 8]
movzx eax, word [esi + 0x4c]
mov dword [esi + 0x28], eax
lea eax, [esi + 0x88]
push eax
push edi
push dword [esi + 0x28]
push dword [esi + 0x34]
push ebx
call fcn.0060c5a0
mov ecx, dword [esi + 0x18]
add esp, 0x14
mov byte [esi + 0x34], al
mov eax, dword [esi + 0x24]
cmp byte [esi + 0x34], 0
mov edx, dword [esi + 0x6c]
js 0x603373
movsx edi, byte [esi + 0x34]
sub eax, edi
jle 0x603373
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x44]
movzx eax, word [eax + edi*2]
mov ebx, eax
test ax, ax
jne 0x6035ef
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
lea eax, [ecx + 0x3b]
mov edx, 0x88888889
imul edx
lea eax, [edx + ecx]
add eax, 0x3b
mov ecx, eax
shr ecx, 0x1f
sar eax, 4
add eax, ecx
cmp eax, 8
mov dword [esi + 0x60], edi
jae 0x603386
cmp eax, 2
jae 0x6033c2
xor eax, eax
jmp 0x603432
mov eax, dword [esi + 0x14]
mov ebx, eax
add eax, 0xfffffffe
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x40]
jmp 0x60364f
cmp eax, 0x100
jb 0x6033e3
mov edi, eax
sar edi, 0x1f
mov bx, 0x28
mov ecx, eax
mov edx, edi
mov eax, edi
shld eax, ecx, 0x1c
add ebx, 0x28
mov dword [esi + 0x28], ebx
shr edx, 4
mov ebx, 0xfff
cmp ebx, ecx
mov ebx, dword [esi + 0x28]
mov ecx, 0
sbb ecx, edi
mov ecx, eax
mov edi, edx
jb 0x60339a
jmp 0x6033ec
mov ecx, eax
sar ecx, 0x1f
mov di, 0x28
mov edx, ecx
add edi, 0xfffffff6
shld edx, eax, 1
cmp eax, 4
lea eax, [eax + eax]
sbb ecx, 0
mov ecx, edx
jb 0x6033cd
jmp 0x60341f
mov edx, eax
sar edx, 0x1f
mov bx, 0x28
cmp eax, 0x10
mov ecx, edx
sbb ecx, 0
mov edi, ebx
jb 0x60341f
mov ecx, eax
mov eax, edx
shld eax, ecx, 0x1f
add edi, 0xa
mov dword [esi + 0x28], edi
mov edi, edx
shr edi, 1
mov ebx, 0x1f
cmp ebx, ecx
mov ecx, 0
sbb ecx, edx
mov edx, edi
mov edi, dword [esi + 0x28]
jb 0x6033f8
and eax, 7
add di, word [eax + eax + 0x71fde6]
add edi, 0xfffffff6
mov eax, edi
mov edi, dword [esi + 0x60]
add eax, dword [esi + 0x50]
mov dword [esi + 0x28], eax
cmp byte [esi + 0x34], 0
jle 0x60350c
imul eax, dword [esi + 0x30], 0x64
cdq
idiv dword [esi + 0x24]
cmp eax, 8
jae 0x60347f
mov dx, 0xffbe
cmp eax, 2
jb 0x603506
mov ecx, eax
sar ecx, 0x1f
mov dx, 0x28
mov edi, ecx
add edx, 0xfffffff6
shld edi, eax, 1
cmp eax, 4
lea eax, [eax + eax]
sbb ecx, 0
mov ecx, edi
jb 0x603467
mov edi, edx
jmp 0x6034f3
cmp eax, 0x100
jb 0x6034b9
mov ebx, eax
sar ebx, 0x1f
mov di, 0x28
mov ecx, eax
mov edx, ebx
mov dword [esi + 0x30], ebx
mov eax, ebx
shld eax, ecx, 0x1c
add edi, 0x28
shr edx, 4
mov ebx, 0xfff
cmp ebx, ecx
mov ecx, 0
sbb ecx, dword [esi + 0x30]
mov ecx, eax
mov ebx, edx
jb 0x603493
jmp 0x6034c2
mov edx, eax
sar edx, 0x1f
mov di, 0x28
cmp eax, 0x10
mov ecx, edx
sbb ecx, 0
jb 0x6034f3
mov ecx, eax
mov eax, edx
shld eax, ecx, 0x1f
add edi, 0xa
mov dword [esi + 0x30], edi
mov edi, edx
shr edi, 1
mov ebx, 0x1f
cmp ebx, ecx
mov ecx, 0
sbb ecx, edx
mov edx, edi
mov edi, dword [esi + 0x30]
jb 0x6034cc
and eax, 7
add di, word [eax + eax + 0x71fde6]
add edi, 0xffffffb4
mov edx, edi
mov edi, dword [esi + 0x60]
add edx, dword [esi + 0x28]
mov dword [esi + 0x28], edx
mov ecx, dword [esi + 0x10]
movzx eax, word [ecx + 0x28]
bt eax, 0xe
jb 0x603530
test eax, 0x100
mov eax, dword [esi + 0x50]
mov ecx, eax
cmovne ecx, dword [esi + 0x78]
cmp ax, 0xb
cmovl ecx, eax
jmp 0x603550
mov edx, dword [esi + 0x28]
lea eax, [edx + 0x10]
add edx, 0xa
cmp byte [esi + 0x34], 0
cmovne edx, eax
mov dword [esi + 0x28], edx
movzx ecx, word [ecx + 0x2a]
mov eax, dword [esi + 0x50]
cmp cx, ax
cmovge ecx, eax
mov eax, dword [esi + 0x44]
xor ebx, ebx
cmp cx, 0xb
jl 0x6035e4
movzx edi, cx
mov dx, 0x28
cmp edi, 0x100
jb 0x60359f
movzx ecx, cx
xor eax, eax
mov dx, 0x28
xor ebx, ebx
mov dword [esi + 0x30], eax
mov edi, eax
shld edi, ecx, 0x1c
add edx, 0x28
mov eax, ebx
shr eax, 4
mov ebx, 0xfff
cmp ebx, ecx
mov ecx, 0
sbb ecx, dword [esi + 0x30]
mov ecx, edi
mov ebx, eax
jb 0x603579
cmp edi, 0x10
mov eax, ebx
sbb eax, 0
jb 0x6035ce
mov eax, edi
mov dword [esi + 0x30], edi
mov edi, ebx
shld edi, eax, 0x1f
add edx, 0xa
mov ecx, ebx
shr ecx, 1
mov eax, 0x1f
cmp eax, dword [esi + 0x30]
mov eax, 0
sbb eax, ebx
mov ebx, ecx
jb 0x6035a9
and edi, 7
add dx, word [edi + edi + 0x71fde6]
add edx, 0xffffffd5
mov ebx, edx
mov eax, dword [esi + 0x44]
mov edi, dword [esi + 0x60]
mov ecx, ebx
add ecx, dword [esi + 0x28]
mov ebx, ecx
mov word [eax + edi*2], cx
mov edi, dword [esi + 0x14]
movsx edx, di
movsx ecx, bx
cmp di, cx
jge 0x60360e
lea eax, [edx + 0x31]
cmp eax, ecx
jl 0x603643
lea eax, [edx + 0x1f]
cmp eax, ecx
jge 0x603626
inc ebx
jmp 0x603643
lea eax, [ecx + 0x31]
mov ebx, edi
cmp eax, edx
jl 0x603643
lea eax, [ecx + 0x1f]
cmp eax, edx
jge 0x603637
mov eax, dword [esi + 0x14]
lea ebx, [eax + 1]
jmp 0x603643
mov eax, ecx
sub eax, edx
movzx eax, byte [eax + str._n_n_t_t_b_b_a_a_a]
add ecx, eax
mov ebx, ecx
jmp 0x603643
sub edx, ecx
movzx ebx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ebx, dword [esi + 0x14]
add ebx, 3
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x40]
mov edx, dword [esi + 0x6c]
cmp dword [esi + 0x4c], 0
jne 0x603667
mov edi, dword [esi + 0x38]
test byte [edi + 0x2f], 2
je 0x603667
add ebx, 0xfffffff6
add eax, 0xffffffe2
mov dword [esi + 0x40], eax
test ecx, ecx
mov eax, dword [esi + 0x2c]
jle 0x60369b
or dword [esi + 0x74], eax
or dword [esi + 0x70], edx
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x48]
mov eax, dword [edi]
xor eax, dword [esi + 0x74]
mov edx, dword [edi + 4]
xor edx, dword [esi + 0x70]
or edx, eax
jne 0x603695
mov al, byte [edi + 0x16]
xor al, byte [esi + 0x34]
jns 0x6037a7
add edi, 0x20
dec ecx
jne 0x60367a
mov eax, dword [esi + 0x18]
mov edi, eax
cmp eax, dword [esi + 0x3c]
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 0x1c]
jge 0x60379a
xor eax, eax
mov edx, dword [esi + 0x18]
cmp edx, dword [esi + 0x3c]
setl al
add edx, eax
mov dword [esi + 0x18], edx
shl edi, 5
add edi, dword [esi + 0x48]
mov dword [esi + 0x2c], ebx
mov ebx, dword [esi + 0x38]
mov eax, dword [ebx + 8]
or eax, dword [ecx]
mov edx, ecx
mov ecx, dword [ebx + 0xc]
or ecx, dword [edx + 4]
mov dword [edi + 4], ecx
mov dword [edi], eax
mov eax, dword [esi + 0x88]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x8c]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x40]
mov word [edi + 0x10], ax
mov eax, dword [esi + 0x2c]
mov word [edi + 0x12], ax
mov eax, dword [esi + 0x14]
mov word [edi + 0x14], ax
mov al, byte [esi + 0x34]
mov byte [edi + 0x16], al
push dword [esi + 0x80]
push dword [edx + 0x18]
push dword [edi + 0x18]
call fcn.00670ee0
add esp, 0xc
mov eax, dword [edi + 0x18]
mov ecx, dword [esi + 0x4c]
mov dword [eax + ecx*4], ebx
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x3c]
jl 0x6031a6
mov dword [esi + 0x54], 0
mov eax, dword [esi + 0x48]
movzx edx, word [eax + 0x10]
mov dword [esi + 0x58], edx
movzx edi, word [eax + 0x12]
cmp byte [esi + 0x20], 2
jb 0x6031a9
mov dword [esi + 0x54], 0
mov eax, dword [esi + 0x7c]
xor ecx, ecx
inc ecx
movzx edx, word [eax - 2]
cmp dx, di
jle 0x603777
movzx edi, word [eax]
mov dword [esi + 0x54], ecx
mov ebx, edx
mov edx, edi
mov dword [esi + 0x58], edx
jmp 0x603784
mov ebx, edi
jne 0x603784
movzx edi, word [eax]
cmp di, word [esi + 0x58]
jg 0x60376b
inc ecx
add eax, 0x20
cmp dword [esi + 0x84], ecx
mov edi, ebx
mov ebx, dword [esi + 0x38]
jne 0x60375f
jmp 0x6031a9
mov edi, dword [esi + 8]
cmp bx, di
jle 0x6037d7
mov dword [esi + 0xc], edx
jmp 0x6037f6
cmp word [edi + 0x12], bx
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x40]
jl 0x6037f0
jne 0x6036c5
cmp word [edi + 0x10], ax
jl 0x6037f0
jne 0x6036c5
mov eax, dword [esi + 0x14]
cmp word [edi + 0x14], ax
jg 0x6036c5
jmp 0x6037f0
mov edi, dword [esi + 0x54]
jne 0x6036af
mov edi, dword [esi + 0x54]
mov eax, dword [esi + 0x14]
cmp ax, word [esi + 0x58]
jl 0x6036af
mov dword [esi + 0xc], edx
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x38]
jmp 0x6031ac
mov eax, dword [esi + 0x68]
inc eax
add ecx, 0x20
mov dword [esi + 0x68], eax
cmp eax, dword [esi + 0x64]
mov ebx, dword [esi + 0x10]
jne 0x603159
mov dword [esi + 8], edi
mov edi, dword [esi + 0x4c]
inc edi
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x48]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x18]
mov dword [esi + 0x64], eax
mov ecx, edi
mov dword [esi + 0x4c], edi
mov ecx, dword [esi + 0x64]
cmp edi, dword [esi + 0x20]
jne 0x603114
test eax, eax
je 0x603876
cmp eax, 2
jl 0x60388b
dec eax
mov ecx, eax
mov edi, dword [esi + 0x48]
lea eax, [edi + 0x20]
movzx edx, word [edi + 0x12]
mov word [esi + 8], dx
mov dword [esi + 0xc], eax
movzx edx, word [esi + 8]
cmp dx, word [eax + 0x12]
mov edx, dword [esi + 0xc]
jg 0x603867
mov edx, edi
add eax, 0x20
mov edi, edx
dec ecx
jne 0x60384d
jmp 0x60388e
mov ebx, dword [esi + 0x10]
jmp 0x6038d5
push str.no_query_solution
push dword [esi + 0x5c]
call fcn.0057bd30
add esp, 8
jmp 0x603af2
mov edx, dword [esi + 0x48]
cmp dword [esi + 0x20], 0
je 0x6038d5
mov eax, dword [ebx + 4]
mov dword [esi + 8], eax
lea ecx, [ebx + 0x340]
mov dword [esi + 0xc], edx
xor edx, edx
mov eax, dword [esi + 0x20]
mov edi, dword [esi + 0xc]
mov edi, dword [edi + 0x18]
mov edi, dword [edi + edx*4]
mov dword [ecx], edi
movzx ebx, byte [edi + 0x10]
mov byte [ecx - 0x14], bl
lea edi, [ebx + ebx*8]
mov ebx, dword [esi + 8]
mov edi, dword [ebx + edi*8 + 0x34]
mov dword [ecx - 0x44], edi
inc edx
add ecx, 0x58
cmp eax, edx
jne 0x6038a8
mov ebx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
movzx eax, word [ebx + 0x28]
and eax, 0x180
cmp eax, 0x100
mov dword [esi + 0xc], edx
jne 0x603948
cmp word [esi + 0x50], 0
je 0x603948
cmp byte [ebx + 0x2f], 0
jne 0x603948
xor ecx, ecx
dec ecx
lea eax, [esi + 0x88]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x20]
lea ecx, [eax - 1]
mov edx, dword [ebx + 0xc]
movzx ebx, cx
mov ecx, dword [esi + 0x10]
lea edi, [esi + 0x88]
push edi
mov edi, dword [esi + 8]
push dword [edi + eax*4 - 4]
push ebx
mov ebx, dword [esi + 0x10]
push 0x80
push dword [esi + 0xc]
call fcn.0060c5a0
add esp, 0x14
movsx eax, al
mov ecx, dword [ebx + 0xc]
cmp dword [ecx], eax
jne 0x603948
mov byte [ebx + 0x2f], 2
mov edx, dword [ebx + 8]
mov ecx, dword [ebx + 0x30]
mov eax, ecx
and eax, 0xfffffffb
mov dword [ebx + 0x30], eax
test edx, edx
je 0x603ae7
mov dword [esi + 8], edx
mov edi, ebx
mov eax, dword [esi + 0xc]
movsx ebx, byte [eax + 0x16]
mov byte [edi + 0x2d], bl
movzx edx, word [edi + 0x28]
test dl, dl
js 0x6039b2
movsd xmm0, qword [eax + 8]
movsd qword [edi + 0x48], xmm0
test bl, bl
jle 0x6039ea
cmp dword [esi + 0x20], 0
je 0x603a6b
cmp bl, 1
jne 0x603a6b
mov edi, edx
and edi, 3
test di, di
mov ebx, dword [esi + 0x10]
je 0x603a6e
or ecx, 4
mov dword [ebx + 0x30], ecx
jmp 0x603a6e
movsx ecx, byte [eax + 0x16]
mov edi, dword [esi + 8]
cmp dword [edi], ecx
jne 0x6039c4
mov ecx, dword [esi + 0x10]
mov byte [ecx + 0x2f], 2
mov ecx, dword [esi + 0x10]
mov ecx, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x30]
test ecx, ecx
je 0x6039e2
mov ecx, dword [ecx]
cmp ecx, ebx
jge 0x6039e2
mov ebx, dword [esi + 0x10]
mov byte [ebx + 0x2d], cl
jmp 0x603a71
mov ebx, dword [esi + 0x10]
jmp 0x603a71
mov byte [edi + 0x2d], 0
mov eax, dword [esi + 0x20]
test eax, eax
mov ebx, edi
je 0x603a6e
mov edi, eax
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x18]
mov edi, dword [ecx + edi*4 - 4]
mov ecx, dword [edi + 0x2c]
bt ecx, 0xc
jb 0x603a6e
and ecx, 0x104
cmp ecx, 0x104
je 0x603a6e
mov eax, dword [esi + 0x20]
dec eax
xor ecx, ecx
lea ebx, [esi + 0x88]
mov dword [ebx + 4], ecx
mov dword [ebx], ecx
movzx eax, ax
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 8]
push ebx
mov ebx, dword [esi + 0x10]
push edi
push eax
push 0x800
push dword [esi + 0xc]
call fcn.0060c5a0
add esp, 0x14
movsx eax, al
mov edi, dword [ebx + 8]
cmp dword [edi], eax
jne 0x603a65
or byte [ebx + 0x30], 4
movsd xmm0, qword [esi + 0x88]
movsd qword [ebx + 0x48], xmm0
movzx edx, word [ebx + 0x28]
jmp 0x603a71
mov ebx, dword [esi + 0x10]
mov edi, dword [esi + 8]
bt edx, 9
jae 0x603ae7
movsx eax, byte [ebx + 0x2d]
cmp dword [edi], eax
jne 0x603ae7
cmp byte [esi + 0x20], 0
je 0x603ae7
xor eax, eax
lea ecx, [esi + 0x88]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov edx, edi
mov edi, dword [esi + 0xc]
mov eax, dword [edi + 0x18]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x20]
lea ecx, [eax - 1]
movzx ecx, cx
mov dword [esi + 0x2c], ecx
mov ecx, dword [esi + 0x10]
lea ebx, [esi + 0x88]
push ebx
mov ebx, dword [esi + 8]
push dword [ebx + eax*4 - 4]
mov ebx, dword [esi + 0x10]
push dword [esi + 0x2c]
xor eax, eax
push eax
push edi
call fcn.0060c5a0
add esp, 0x14
movsx eax, al
mov ecx, dword [ebx + 8]
cmp dword [ecx], eax
jne 0x603ae7
or byte [ebx + 0x30], 8
movsd xmm0, qword [esi + 0x88]
movsd qword [ebx + 0x48], xmm0
mov eax, dword [esi + 0xc]
movzx eax, word [eax + 0x10]
mov word [ebx + 0x34], ax
mov ecx, dword [esi + 0x98]
xor ecx, ebp
call fcn.0066e1f1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret