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

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x4105d0
test dword [0x87ed4c], 0xffffffff
jne 0x411290
call fcn.007663a0
jmp fcn.004105a0
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x84
pxor xmm0, xmm0
mov dword [esp + 0x68], ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x74], eax
movaps xmmword [esp + 0x40], xmm0
movd dword [esp + 0x50], xmm0
mov eax, edx
mov edx, dword [eax + 0x18]
movzx ecx, byte [edx + 2]
movzx ebx, byte [edx + 3]
shl ecx, 8
lea esi, [ecx + ebx + 1]
mov dword [esp + 0x78], esi
lea edi, [esi*4]
shl esi, 6
sub esi, edi
call fcn.0058d940
test eax, eax
jne 0x410e50
mov eax, esi
call fcn.0041ebd4
mov dword [esp + 0x70], eax
cmp dword [esp + 0x70], 0
je 0x410e50
mov eax, dword [esp + 0x78]
lea edi, [eax + eax*2]
shl edi, 4
add edi, dword [esp + 0x70]
lea esi, [edi + eax*4]
lea edx, [esi + eax*4]
mov dword [esp + 0x20], edx
xor ecx, ecx
lea eax, [eax - 1]
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x6c], edi
cmp ecx, dword [esp + 0x34]
jne 0x4106c3
mov eax, dword [esp + 0x68]
lea ebx, [ecx + ecx*2]
shl ebx, 4
movsd xmm0, qword [eax]
mov edx, dword [esp + 0x70]
movsd qword [ebx + edx], xmm0
movsd xmm1, qword [eax + 8]
movsd qword [ebx + edx + 8], xmm1
movsd xmm2, qword [eax + 0x10]
movsd qword [ebx + edx + 0x10], xmm2
movsd xmm3, qword [eax + 0x18]
movsd qword [ebx + edx + 0x18], xmm3
movsd xmm4, qword [eax + 0x20]
movsd qword [ebx + edx + 0x20], xmm4
movsd xmm5, qword [eax + 0x28]
movsd qword [ebx + edx + 0x28], xmm5
jmp 0x4107bf
mov edi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x74]
mov esi, dword [edi + 0x18]
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x38], ecx
lea edx, [ecx + ecx*2]
shl edx, 4
imul eax, ecx
movzx ebx, byte [esi + eax + 4]
movzx ecx, byte [esi + eax + 5]
mov dword [esp + 0x28], edx
movzx edx, byte [esi + eax + 6]
mov dword [esp + 0x2c], eax
shl ebx, 0x18
shl ecx, 0x10
add ebx, ecx
movzx ecx, byte [esi + eax + 7]
shl edx, 8
xor eax, eax
add edx, ecx
lea ecx, [eax + eax]
add ebx, edx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x2c]
movzx edx, byte [esi + ebx + 8]
movzx edi, byte [esi + ebx + 9]
shl edx, 0x18
shl edi, 0x10
add edx, edi
movzx edi, byte [esi + ebx + 0xa]
movzx esi, byte [esi + ebx + 0xb]
adc eax, 0
shl edi, 8
add edi, esi
add edx, edi
mov ebx, dword [esp + 0x28]
adc eax, 0
add ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov eax, dword [esp + 0x70]
mov dword [eax + ebx], ecx
mov ecx, dword [esp + 0x74]
mov dword [eax + ebx + 4], edx
mov edi, dword [ecx + 0x14]
add edi, edi
mov ecx, dword [esp + 0x38]
test edi, edi
jle 0x4107bf
mov edi, dword [esp + 0x74]
xor edx, edx
add eax, ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], ecx
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x7c]
imul esi, dword [edi + 0x18]
add esi, dword [ecx + 0x18]
inc edx
movzx ebx, byte [esi + edx*4 + 8]
movzx ecx, byte [esi + edx*4 + 9]
shl ebx, 0x18
shl ecx, 0x10
add ebx, ecx
movzx ecx, byte [esi + edx*4 + 0xa]
movzx esi, byte [esi + edx*4 + 0xb]
shl ecx, 8
add ecx, esi
add ebx, ecx
mov dword [eax + edx*4 + 4], ebx
mov ebx, dword [edi + 0x14]
add ebx, ebx
cmp edx, ebx
jl 0x410777
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x74]
mov dword [eax + ecx*4], ecx
mov eax, dword [edx + 0x14]
test eax, eax
jle 0x410857
cmp dword [edx + 0x258], 0
jne 0x410807
test eax, eax
jbe 0x410857
add ebx, dword [esp + 0x70]
xor edx, edx
movss xmm0, dword [ebx + edx*8 + 8]
addss xmm0, dword [esp + edx*4 + 0x40]
addss xmm0, dword [ebx + edx*8 + 0xc]
movss dword [esp + edx*4 + 0x40], xmm0
inc edx
cmp edx, eax
jb 0x4107e8
jmp 0x410857
test eax, eax
jbe 0x410857
add ebx, dword [esp + 0x70]
xor edx, edx
movss xmm1, dword [esp + edx*4 + 0x40]
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [ebx + edx*8 + 0xc]
xorps xmm3, xmm3
cvtsi2sd xmm3, dword [ebx + edx*8 + 8]
cvtps2pd xmm2, xmm1
addsd xmm3, xmm2
xorps xmm4, xmm4
xorps xmm5, xmm5
cvtsd2ss xmm4, xmm3
xorps xmm7, xmm7
movss xmm5, xmm4
cvtps2pd xmm6, xmm5
addsd xmm0, xmm6
cvtsd2ss xmm7, xmm0
movss dword [esp + edx*4 + 0x40], xmm7
inc edx
cmp edx, eax
jb 0x410811
inc ecx
cmp ecx, dword [esp + 0x78]
jb 0x41066a
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x6c]
test eax, eax
jle 0x410930
cmp eax, 8
jl 0x410e62
cvtsi2ss xmm0, dword [esp + 0x78]
mov ecx, eax
and ecx, 7
neg ecx
xorps xmm1, xmm1
movss xmm1, xmm0
cvtps2pd xmm2, xmm1
mulsd xmm2, qword [0x78ca40]
add ecx, eax
xor edx, edx
movddup xmm0, xmm2
movaps xmm2, xmmword [esp + edx*4 + 0x40]
movaps xmm7, xmmword [esp + edx*4 + 0x50]
cvtps2pd xmm1, xmm2
divpd xmm1, xmm0
movhlps xmm2, xmm2
cvtpd2ps xmm5, xmm1
cvtps2pd xmm3, xmm2
divpd xmm3, xmm0
cvtpd2ps xmm4, xmm3
movlhps xmm5, xmm4
movaps xmmword [esp + edx*4 + 0x40], xmm5
cvtps2pd xmm6, xmm7
divpd xmm6, xmm0
movhlps xmm7, xmm7
cvtpd2ps xmm2, xmm6
cvtps2pd xmm1, xmm7
divpd xmm1, xmm0
cvtpd2ps xmm7, xmm1
movlhps xmm2, xmm7
movaps xmmword [esp + edx*4 + 0x50], xmm2
add edx, 8
cmp edx, ecx
jb 0x4108a2
cmp ecx, eax
jae 0x410930
cvtsi2ss xmm0, dword [esp + 0x78]
xorps xmm1, xmm1
movss xmm1, xmm0
cvtps2pd xmm0, xmm1
mulsd xmm0, qword [0x78ca40]
movss xmm1, dword [esp + ecx*4 + 0x40]
cvtps2pd xmm2, xmm1
divsd xmm2, xmm0
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm2
movss dword [esp + ecx*4 + 0x40], xmm3
inc ecx
cmp ecx, eax
jb 0x410911
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x78]
xor ebx, ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6c], edi
mov dword [ecx + ebx*4], 0
cmp dword [eax + 0x14], 0
jle 0x4109ae
movss xmm0, dword [ecx + ebx*4]
xor esi, esi
lea edi, [ebx + ebx*2]
shl edi, 4
add edi, dword [esp + 0x70]
cmp dword [eax + 0x258], 0
jne 0x410981
movss xmm1, dword [edi + esi*8 + 0xc]
movss xmm3, dword [edi + esi*8 + 8]
cvtps2pd xmm2, xmm1
cvtps2pd xmm4, xmm3
jmp 0x41098d
cvtsi2sd xmm2, dword [edi + esi*8 + 0xc]
cvtsi2sd xmm4, dword [edi + esi*8 + 8]
subsd xmm2, xmm4
cvtsd2ss xmm1, xmm2
subss xmm1, dword [esp + esi*4 + 0x40]
inc esi
mulss xmm1, xmm1
addss xmm0, xmm1
movss dword [ecx + ebx*4], xmm0
cmp esi, dword [eax + 0x14]
jl 0x410964
nop dword [eax]
nop dword [eax]
inc ebx
cmp ebx, edx
jl 0x410946
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x78], 1
mov edi, dword [esp + 0x6c]
jle 0x410a64
mov ebx, dword [esp + 0x78]
mov ecx, dword [esp + 0x20]
mov edx, ebx
shr edx, 1
mov dword [esp + 0x34], edx
sub ebx, edx
mov eax, edi
mov dword [esp + 0x30], ebx
lea ebx, [edi + edx*4]
mov dword [esp + 0xc], esi
call fcn.00411e70
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xc], esi
mov eax, ebx
call fcn.00411e70
mov eax, dword [esp + 0x34]
lea edx, [eax*4]
push edx
push edi
push esi
call fcn.007666b0
add esp, 0xc
xor eax, eax
xor edx, edx
mov dword [esp + 0x2c], ebx
cmp eax, dword [esp + 0x34]
jge 0x410a33
je 0x410a43
jmp 0x410e69
cmp edx, dword [esp + 0x30]
jge 0x410a64
cmp eax, dword [esp + 0x34]
jne 0x410e69
mov ebx, dword [esp + 0x2c]
mov esi, dword [ebx + edx*4]
lea ecx, [eax*4]
lea ecx, [ecx + edx*4]
mov dword [edi + ecx], esi
inc edx
cmp eax, dword [esp + 0x34]
jl 0x410a47
cmp edx, dword [esp + 0x30]
jl 0x410a47
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x74]
mov ebx, dword [eax + 0x18]
add ebx, 2
mov ecx, dword [edx + 0x10]
add ecx, 0xfffffffe
push ecx
push 0
push ebx
call fcn.00766740
add esp, 0xc
mov eax, dword [esp + 0x7c]
mov dword [eax + 0x14], 1
xor ebx, ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x6c], edi
mov ecx, dword [esp + 0x74]
inc ebx
lea edi, [ebx - 1]
mov eax, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x18]
add eax, 0xfffffffc
cdq
idiv ecx
mov esi, eax
mov eax, 0x55555556
imul esi
mov eax, esi
sar eax, 0x1f
sub edx, eax
neg edx
add edx, dword [esp + 0x78]
dec edx
cmp edi, edx
jge 0x410f00
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x7c]
mov edx, dword [edx + ebx*4 - 4]
lea edx, [edx + edx*2]
shl edx, 4
add edx, dword [esp + 0x70]
mov eax, dword [edi + 0x18]
movzx edi, byte [eax + 2]
mov dword [esp + 0x64], eax
shl edi, 8
movzx eax, byte [eax + 3]
mov dword [esp + 0x60], edi
add edi, eax
cmp edi, esi
mov dword [esp + 0x54], eax
jge 0x410bce
mov eax, dword [edx]
mov esi, dword [esp + 0x64]
mov dword [esp + 0x34], edx
mov edx, dword [edx + 4]
imul ecx, edi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x38], eax
mov eax, edx
shr eax, 0x18
mov byte [esi + ecx + 4], al
add ecx, esi
mov eax, edx
shr eax, 0x10
mov byte [ecx + 5], al
mov eax, edx
shr eax, 8
mov byte [ecx + 6], al
mov byte [ecx + 7], dl
mov edx, dword [esp + 0x38]
shr edx, 0x18
mov byte [ecx + 8], dl
mov edx, dword [esp + 0x38]
shr edx, 0x10
mov byte [ecx + 9], dl
mov edx, dword [esp + 0x38]
shr edx, 8
mov byte [ecx + 0xa], dl
mov edx, dword [esp + 0x38]
mov byte [ecx + 0xb], dl
mov edx, dword [edi + 0x14]
add edx, edx
test edx, edx
mov edx, dword [esp + 0x34]
jle 0x410ba9
xor esi, esi
mov dword [esp + 0x30], ebx
inc esi
mov eax, dword [edx + esi*4 + 4]
mov ebx, eax
shr ebx, 0x18
mov byte [ecx + esi*4 + 8], bl
mov ebx, eax
shr ebx, 0x10
mov byte [ecx + esi*4 + 9], bl
mov ebx, eax
shr ebx, 8
mov byte [ecx + esi*4 + 0xa], bl
mov byte [ecx + esi*4 + 0xb], al
mov eax, dword [edi + 0x14]
add eax, eax
cmp esi, eax
jl 0x410b78
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x60]
lea eax, [ecx + eax + 1]
mov ecx, eax
shr ecx, 8
mov edi, dword [esi + 0x18]
mov byte [edi + 2], cl
mov byte [edi + 3], al
mov dword [esi + 0x14], 1
mov edi, dword [edx]
mov esi, dword [edx + 4]
mov edx, dword [esp + 0x68]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
neg eax
add eax, edi
neg ecx
add ecx, esi
or eax, ecx
jne 0x410e25
cmp dword [ebp + 0x14], 0
jne 0x410d0e
mov edx, dword [esp + 0x7c]
mov ecx, dword [edx + 8]
mov dword [esp + 0x40], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x244]
mov dword [esp + 0x48], ecx
mov edx, 1
mov dword [esp + 0x4c], eax
call fcn.00416b20
test eax, eax
jne 0x410c79
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x24], eax
call fcn.00498e60
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov ecx, dword [esp + 0x24]
xor edx, edx
mov dword [ecx + 0x14], edx
mov dword [ecx + 0x24], edx
mov dword [ecx + 0x20], edx
mov dword [ecx], edi
mov edi, dword [esp + 0x4c]
mov dword [ecx + 4], esi
mov esi, 4
mov word [ecx + 0x1c], si
mov byte [ecx + 0x1e], 1
mov edx, dword [edi]
mov edx, dword [edx + 0x44]
test edx, edx
je 0x410c79
push edx
call dword [0x8303d0]
pop ecx
mov ecx, dword [esp + 0x74]
mov edx, 2
mov edi, dword [ecx + 0x244]
mov eax, edi
call fcn.00416b20
test eax, eax
jne 0x410ceb
mov eax, dword [edi + 0x3c]
add eax, 0x28
mov dword [esp + 0x2c], eax
call fcn.00498e60
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x48]
xor edx, edx
mov dword [eax + 0x14], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], edx
mov edx, 4
mov dword [eax], ecx
mov dword [eax + 4], esi
mov word [eax + 0x1c], dx
mov byte [eax + 0x1e], 1
mov edi, dword [edi]
mov edx, dword [edi + 0x44]
test edx, edx
je 0x410ceb
push edx
call dword [0x8303d0]
pop ecx
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x244]
call fcn.0048ecb4
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x244]
call fcn.00416ab4
jmp 0x410e21
mov edx, dword [esp + 0x7c]
mov ecx, dword [edx + 8]
mov dword [esp + 0x3c], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x250]
mov dword [esp + 0x44], ecx
mov edx, 1
mov dword [esp + 0x50], eax
call fcn.00416b20
test eax, eax
jne 0x410d91
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x20], eax
call fcn.00498e60
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov ecx, dword [esp + 0x20]
xor edx, edx
mov dword [ecx + 0x14], edx
mov dword [ecx + 0x24], edx
mov dword [ecx + 0x20], edx
mov dword [ecx], edi
mov edi, dword [esp + 0x50]
mov dword [ecx + 4], esi
mov esi, 4
mov word [ecx + 0x1c], si
mov byte [ecx + 0x1e], 1
mov edx, dword [edi]
mov edx, dword [edx + 0x44]
test edx, edx
je 0x410d91
push edx
call dword [0x8303d0]
pop ecx
mov ecx, dword [esp + 0x74]
mov edx, 2
mov edi, dword [ecx + 0x250]
mov eax, edi
call fcn.00416b20
test eax, eax
jne 0x410e03
mov eax, dword [edi + 0x3c]
add eax, 0x28
mov dword [esp + 0x28], eax
call fcn.00498e60
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x44]
xor edx, edx
mov dword [eax + 0x14], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], edx
mov edx, 4
mov dword [eax], ecx
mov dword [eax + 4], esi
mov word [eax + 0x1c], dx
mov byte [eax + 0x1e], 1
mov edi, dword [edi]
mov edx, dword [edi + 0x44]
test edx, edx
je 0x410e03
push edx
call dword [0x8303d0]
pop ecx
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x250]
call fcn.0048ecb4
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x250]
call fcn.00416ab4
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x58], ebx
je 0x410a9d
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x70]
call fcn.004c69c4
mov eax, ebx
add esp, 0x84
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, 7
add esp, 0x84
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor ecx, ecx
jmp 0x4108f5
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x20]
lea ecx, [edi + eax*4]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x6c], edi
cmp edx, ebx
jne 0x410ea2
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x6c]
lea ecx, [edx*4]
lea ecx, [ecx + eax*4]
mov ebx, dword [esi + eax*4]
mov dword [edi + ecx], ebx
inc eax
jmp 0x410a26
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
mov ecx, dword [ecx + edx*4]
mov edi, dword [edi + eax*4]
movss xmm0, dword [esi + ecx*4]
comiss xmm0, dword [esi + edi*4]
jbe 0x410ed9
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x6c]
lea ecx, [edx*4]
lea ecx, [ecx + eax*4]
mov ebx, dword [esi + eax*4]
mov dword [edi + ecx], ebx
inc eax
jmp 0x410a26
mov edi, dword [esp + 0x28]
mov dword [edi + edx*4], ecx
inc edx
cmp eax, dword [esp + 0x34]
jl 0x410e80
nop dword [eax + eax]
mov edi, dword [esp + 0x6c]
cmp edx, ebx
jl 0x410e75
jmp 0x410a64
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
call fcn.00416280
mov dword [esp + 0x6c], edi
cmp esi, dword [esp + 0x78]
jge 0x410e38
mov edi, dword [esp + 0x6c]
lea eax, [esp + 0x60]
mov ebx, dword [edi + esi*4]
mov ecx, dword [ebp + 0x14]
lea edi, [ebx + ebx*2]
shl edi, 4
add edi, dword [esp + 0x70]
mov dword [esp + 0xc], eax
mov edx, edi
mov eax, dword [esp + 0x74]
call fcn.0040e640
mov ebx, eax
test ebx, ebx
jne 0x411254
mov eax, dword [esp + 0x60]
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x54], eax
jle 0x411039
mov ebx, dword [edi]
mov ecx, dword [edi + 4]
mov dword [esp + 0x58], esi
mov eax, ecx
sar eax, 0x18
mov edx, ecx
sar edx, 0x10
mov esi, ecx
mov dword [esp + 0x44], edi
mov edi, ecx
sar edi, 0x1f
sar esi, 8
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], eax
xor eax, edx
xor eax, esi
xor eax, ecx
mov dword [esp + 0x4c], edx
mov edx, edi
xor edx, edi
xor edx, edi
mov dword [esp + 0x50], esi
xor edx, edi
xor edx, dword [esp + 0x48]
xor edx, dword [esp + 0x4c]
xor edx, dword [esp + 0x50]
mov esi, ecx
shl esi, 8
mov edi, ebx
shr edi, 0x18
or esi, edi
xor eax, esi
mov esi, ecx
shl esi, 0x10
mov edi, ebx
shr edi, 0x10
or esi, edi
xor eax, esi
mov esi, ecx
shl esi, 0x18
mov edi, ebx
shr edi, 8
or esi, edi
mov edi, dword [esp + 0x44]
xor eax, esi
mov esi, dword [esp + 0x58]
xor eax, ebx
xor edx, ecx
mov ecx, eax
test edx, edx
jge 0x410ffb
add ecx, 0x7f
adc edx, 0
shrd ecx, edx, 7
mov edx, dword [esp + 0x74]
shl ecx, 7
sub eax, ecx
mov ebx, dword [edx + eax*4 + 0x28]
test ebx, ebx
je 0x411039
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x3c]
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
sub edx, esi
sub eax, ecx
or edx, eax
je 0x411262
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
jne 0x41101c
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x54]
mov ecx, edi
call fcn.0040fb50
test eax, eax
je 0x4110a1
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0x74]
cmp eax, dword [edx + 0x230]
jle 0x411089
mov eax, dword [esp + 0x54]
mov edx, dword [eax + 8]
dec edx
or edx, dword [eax + 0xc]
je 0x411089
mov ebx, dword [ebp + 0x14]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x54]
mov dword [eax + 0x230], ebx
mov ecx, edi
mov dword [esp + 0xc], ebx
call fcn.004105a0
jmp 0x411108
mov ebx, dword [ebp + 0x14]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x54]
mov dword [esp + 0xc], ebx
mov ecx, edi
call fcn.00412160
jmp 0x411108
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x54]
mov ecx, edi
call fcn.0040fdf0
cmp dword [ebp + 0x14], 0
jne 0x4110e0
mov edx, dword [edi]
mov ecx, dword [edi + 4]
mov ebx, dword [esp + 0x54]
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x74]
call fcn.00413e04
jmp 0x411108
mov edx, dword [edi]
mov ecx, dword [edi + 4]
mov ebx, dword [esp + 0x54]
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x74]
call fcn.00413ef4
mov ebx, eax
mov edi, dword [esp + 0x60]
test edi, edi
je 0x41111b
mov eax, dword [edi + 0x10]
dec eax
mov dword [edi + 0x10], eax
je 0x411122
xor edx, edx
jmp 0x41124f
mov eax, dword [edi + 8]
dec eax
or eax, dword [edi + 0xc]
jne 0x411136
mov eax, dword [esp + 0x74]
mov dword [eax + 0x1c], 0xffffffff
mov edx, dword [edi]
test edx, edx
je 0x41114b
mov eax, dword [esp + 0x74]
call fcn.004137e0
mov edx, eax
test edx, edx
jne 0x411158
mov eax, dword [esp + 0x74]
mov edx, edi
call fcn.00417880
mov edx, eax
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x38], eax
or eax, ecx
je 0x411240
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x28], edi
mov edi, ecx
mov ebx, edi
sar ebx, 0x18
mov esi, edi
sar esi, 0x1f
mov eax, edi
mov dword [esp + 0x34], edx
sar eax, 0x10
mov ecx, ebx
xor ecx, eax
mov edx, edi
sar edx, 8
mov dword [esp + 0x2c], eax
mov eax, esi
xor eax, esi
xor ecx, edx
mov dword [esp + 0x30], edx
xor eax, esi
xor ecx, edi
xor eax, esi
mov esi, dword [esp + 0x38]
shr esi, 0x18
mov edx, edi
shl edx, 8
or edx, esi
xor ecx, edx
mov edx, dword [esp + 0x38]
xor eax, ebx
xor eax, dword [esp + 0x2c]
xor eax, dword [esp + 0x30]
mov esi, edi
shl esi, 0x10
mov ebx, edx
shr ebx, 0x10
or esi, ebx
xor ecx, esi
mov esi, edi
shl esi, 0x18
mov ebx, edx
shr ebx, 8
or esi, ebx
mov ebx, dword [esp + 0x5c]
xor ecx, esi
mov esi, dword [esp + 0x58]
xor ecx, edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x20], ecx
xor eax, edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], eax
test eax, eax
jge 0x41120a
add ecx, 0x7f
adc dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
shrd ecx, eax, 7
mov eax, dword [esp + 0x20]
shl ecx, 7
sub eax, ecx
mov ecx, dword [esp + 0x74]
lea ecx, [ecx + eax*4]
add ecx, 0x28
mov eax, dword [ecx]
cmp eax, edi
je 0x411234
lea ecx, [eax + 0x1c]
mov eax, dword [ecx]
cmp eax, edi
jne 0x41122b
mov eax, dword [edi + 0x1c]
mov dword [ecx], eax
mov dword [edi + 0x1c], 0
mov eax, edi
mov dword [esp + 0x34], edx
call fcn.004c69c4
mov edx, dword [esp + 0x34]
test ebx, ebx
cmove ebx, edx
inc esi
test ebx, ebx
je 0x410f1d
jmp 0x410e38
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov edx, dword [ebx]
call fcn.004137e0
cmp dword [esp + 0x54], 0
je 0x41127f
mov eax, dword [esp + 0x54]
inc dword [eax + 0x10]
mov eax, dword [esp + 0x54]
mov dword [ebx], eax
jmp 0x411039
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x84
mov dword [esp + 0x68], ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x74], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov eax, edx
mov edx, dword [eax + 0x18]
movzx ecx, byte [edx + 2]
shl ecx, 8
movzx ebx, byte [edx + 3]
lea esi, [ecx + ebx + 1]
mov dword [esp + 0x78], esi
lea edi, [esi*4]
shl esi, 6
sub esi, edi
call fcn.0058d940
test eax, eax
jne 0x411a52
mov eax, esi
call fcn.0041ebd4
mov dword [esp + 0x70], eax
cmp dword [esp + 0x70], 0
je 0x411a52
mov eax, dword [esp + 0x78]
lea esi, [eax + eax*2]
shl esi, 4
add esi, dword [esp + 0x70]
lea ebx, [esi + eax*4]
lea edx, [ebx + eax*4]
mov dword [esp + 0x28], edx
xor eax, eax
mov edx, dword [esp + 0x78]
lea edx, [edx - 1]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x68]
cmp eax, dword [esp + 0x4c]
jne 0x41137a
lea ebx, [eax + eax*2]
shl ebx, 4
mov edx, dword [esp + 0x70]
add edx, ebx
mov ecx, 0x30
mov edi, dword [esi + ecx - 4]
mov dword [edx + ecx - 4], edi
mov edi, dword [esi + ecx - 8]
mov dword [edx + ecx - 8], edi
mov edi, dword [esi + ecx - 0xc]
mov dword [edx + ecx - 0xc], edi
mov edi, dword [esi + ecx - 0x10]
mov dword [edx + ecx - 0x10], edi
sub ecx, 0x10
jne 0x411350
jmp 0x41149d
mov dword [esp + 0x68], esi
mov dword [esp + 0x50], eax
mov esi, dword [esp + 0x7c]
mov esi, dword [esi + 0x18]
mov ebx, dword [esp + 0x74]
mov edx, dword [ebx + 0x18]
lea ecx, [eax + eax*2]
shl ecx, 4
mov dword [esp + 0x20], ecx
imul edx, eax
mov dword [esp + 0x24], edx
movzx ecx, byte [esi + edx + 4]
shl ecx, 0x18
movzx eax, byte [esi + edx + 5]
shl eax, 0x10
add ecx, eax
movzx ebx, byte [esi + edx + 6]
shl ebx, 8
movzx edx, byte [esi + edx + 7]
xor eax, eax
add ebx, edx
mov dword [esp + 0x30], eax
add ecx, ebx
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x24]
movzx edx, byte [esi + ebx + 8]
xor ecx, ecx
shld ecx, edx, 0x18
shl edx, 0x18
movzx edi, byte [esi + ebx + 9]
shld eax, edi, 0x10
shl edi, 0x10
add edx, edi
adc ecx, eax
movzx eax, byte [esi + ebx + 0xa]
xor edi, edi
shld edi, eax, 8
shl eax, 8
movzx esi, byte [esi + ebx + 0xb]
add eax, esi
add edx, eax
adc ecx, edi
mov eax, dword [esp + 0x30]
add eax, edx
mov edx, dword [esp + 0x34]
add edx, ecx
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0x20]
mov dword [ecx + ebx], eax
mov dword [ecx + ebx + 4], edx
mov esi, dword [esp + 0x74]
mov eax, dword [esi + 0x14]
add eax, eax
test eax, eax
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x68]
jle 0x41149d
xor ecx, ecx
mov edx, dword [esp + 0x70]
add edx, ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x68], esi
mov edi, dword [esp + 0x74]
inc ecx
mov esi, dword [esp + 0x50]
imul esi, dword [edi + 0x18]
mov eax, dword [esp + 0x7c]
add esi, dword [eax + 0x18]
movzx ebx, byte [esi + ecx*4 + 8]
shl ebx, 0x18
movzx eax, byte [esi + ecx*4 + 9]
shl eax, 0x10
add ebx, eax
movzx eax, byte [esi + ecx*4 + 0xa]
shl eax, 8
movzx esi, byte [esi + ecx*4 + 0xb]
add eax, esi
add ebx, eax
mov dword [edx + ecx*4 + 4], ebx
mov ebx, dword [edi + 0x14]
add ebx, ebx
cmp ecx, ebx
jl 0x411451
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [edx + eax*4], eax
mov ecx, dword [esp + 0x74]
mov edx, dword [ecx + 0x14]
test edx, edx
jle 0x411500
cmp dword [ecx + 0x258], 0
jne 0x4114d9
test edx, edx
jbe 0x411500
xor ecx, ecx
add ebx, dword [esp + 0x70]
fld dword [ebx + ecx*8 + 8]
fadd dword [esp + ecx*4 + 0x38]
fadd dword [ebx + ecx*8 + 0xc]
fstp dword [esp + ecx*4 + 0x38]
inc ecx
cmp ecx, edx
jb 0x4114c2
jmp 0x411500
test edx, edx
jbe 0x411500
xor ecx, ecx
add ebx, dword [esp + 0x70]
jmp 0x4114e9
fstp dword [esp + ecx*4 + 0x34]
fild dword [ebx + ecx*8 + 0xc]
fild dword [ebx + ecx*8 + 8]
fadd dword [esp + ecx*4 + 0x38]
faddp st(1)
inc ecx
cmp ecx, edx
jb 0x4114e5
fstp dword [esp + ecx*4 + 0x34]
inc eax
cmp eax, dword [esp + 0x78]
jb 0x411339
mov dword [esp + 0x68], esi
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
test edx, edx
jle 0x411546
xor eax, eax
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fmul qword [0x78ca48]
jmp 0x411535
fstp dword [esp + eax*4 + 0x34]
fld dword [esp + eax*4 + 0x38]
fdiv st(1)
inc eax
cmp eax, edx
jl 0x411531
fstp dword [esp + eax*4 + 0x34]
fstp st(0)
xor edi, edi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
mov dword [ecx + edi*4], 0
cmp dword [eax + 0x14], 0
jle 0x4115b1
xor ebx, ebx
lea esi, [edi + edi*2]
shl esi, 4
add esi, dword [esp + 0x70]
fld dword [ecx + edi*4]
cmp dword [eax + 0x258], 0
jne 0x41158b
fld dword [esi + ebx*8 + 0xc]
fld dword [esi + ebx*8 + 8]
jmp 0x411593
fild dword [esi + ebx*8 + 0xc]
fild dword [esi + ebx*8 + 8]
fsubp st(1)
fsub dword [esp + ebx*4 + 0x38]
fmul st(0)
faddp st(1)
fst dword [ecx + edi*4]
inc ebx
cmp ebx, dword [eax + 0x14]
jl 0x411578
mov esi, esi
lea edi, [edi]
fstp st(0)
inc edi
cmp edi, edx
jl 0x41155c
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
cmp dword [esp + 0x78], 1
jle 0x41165c
mov edi, dword [esp + 0x78]
mov edx, edi
shr edx, 1
mov dword [esp + 0x38], edx
sub edi, edx
mov dword [esp + 0x34], edi
lea edi, [esi + edx*4]
mov dword [esp + 0xc], ebx
mov eax, esi
mov ecx, dword [esp + 0x28]
call fcn.00411e70
mov dword [esp + 0xc], ebx
mov eax, edi
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
call fcn.00411e70
mov eax, dword [esp + 0x38]
lea edx, [eax*4]
push edx
push esi
push ebx
call fcn.007666b0
add esp, 0xc
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x30], edi
cmp eax, dword [esp + 0x38]
jge 0x41162b
je 0x41163b
jmp 0x411a64
cmp ecx, dword [esp + 0x34]
jge 0x41165c
cmp eax, dword [esp + 0x38]
jne 0x411a64
mov edi, dword [esp + 0x30]
lea edx, [eax*4]
lea edx, [edx + ecx*4]
mov ebx, dword [edi + ecx*4]
mov dword [esi + edx], ebx
inc ecx
cmp eax, dword [esp + 0x38]
jl 0x41163f
cmp ecx, dword [esp + 0x34]
jl 0x41163f
mov eax, dword [esp + 0x7c]
mov ebx, dword [eax + 0x18]
add ebx, 2
mov edx, dword [esp + 0x74]
mov ecx, dword [edx + 0x10]
add ecx, 0xfffffffe
push ecx
push 0
push ebx
call fcn.00766740
add esp, 0xc
mov eax, dword [esp + 0x7c]
mov dword [eax + 0x14], 1
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x18]
add eax, 0xfffffffc
cdq
idiv ecx
mov edi, eax
mov eax, 0x55555556
imul edi
mov esi, edi
sar esi, 0x1f
sub edx, esi
neg edx
add edx, dword [esp + 0x78]
dec edx
cmp ebx, edx
jge 0x411b0f
mov esi, dword [esp + 0x6c]
mov edx, dword [esi + ebx*4]
lea esi, [edx + edx*2]
shl esi, 4
add esi, dword [esp + 0x70]
mov edx, dword [esp + 0x7c]
mov eax, dword [edx + 0x18]
mov dword [esp + 0x64], eax
movzx edx, byte [eax + 2]
shl edx, 8
movzx eax, byte [eax + 3]
mov dword [esp + 0x54], eax
add eax, edx
mov dword [esp + 0x60], eax
cmp eax, edi
jge 0x4117d3
mov dword [esp + 0x30], edx
imul ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
lea edi, [ecx + edi + 4]
mov eax, dword [esi]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 4]
mov ecx, eax
shr ecx, 0x18
mov byte [edi], cl
mov edx, eax
shr edx, 0x10
mov byte [edi + 1], dl
mov edx, eax
shr edx, 8
mov byte [edi + 2], dl
mov byte [edi + 3], al
mov edx, dword [esp + 0x34]
shrd edx, eax, 0x18
mov byte [edi + 4], dl
mov edx, dword [esp + 0x34]
shrd edx, eax, 0x10
mov byte [edi + 5], dl
mov edx, dword [esp + 0x34]
shrd edx, eax, 8
mov byte [edi + 6], dl
mov edx, dword [esp + 0x34]
mov byte [edi + 7], dl
add edi, 8
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0x14]
add eax, eax
test eax, eax
mov edx, dword [esp + 0x30]
jle 0x4117ac
xor ecx, ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x74]
mov edx, dword [esi + ecx*4 + 8]
mov eax, edx
shr eax, 0x18
mov byte [edi], al
mov eax, edx
shr eax, 0x10
mov byte [edi + 1], al
mov eax, edx
shr eax, 8
mov byte [edi + 2], al
mov byte [edi + 3], dl
add edi, 4
inc ecx
mov eax, dword [ebx + 0x14]
add eax, eax
cmp ecx, eax
jl 0x411779
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x58]
mov ecx, dword [esp + 0x7c]
mov edi, dword [ecx + 0x18]
mov eax, dword [esp + 0x54]
lea eax, [edx + eax + 1]
mov dword [esp + 0x38], eax
shr eax, 8
mov byte [edi + 2], al
mov eax, dword [esp + 0x38]
mov byte [edi + 3], al
mov dword [ecx + 0x14], 1
mov edi, dword [esi]
mov esi, dword [esi + 4]
mov eax, dword [esp + 0x68]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
neg ecx
add ecx, edi
neg edx
add edx, esi
or ecx, edx
jne 0x411a2a
cmp dword [ebp + 0x14], 0
jne 0x411913
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 8]
mov dword [esp + 0x48], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0x244]
mov dword [esp + 0x4c], eax
mov edx, 1
call fcn.00416b20
test eax, eax
jne 0x41187e
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x24], eax
call fcn.00498e60
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
xor eax, eax
mov edx, dword [esp + 0x24]
mov dword [edx + 0x14], eax
mov dword [edx + 0x24], eax
mov dword [edx + 0x20], eax
mov dword [edx], edi
mov dword [edx + 4], esi
mov esi, 4
mov word [edx + 0x1c], si
mov byte [edx + 0x1e], 1
mov ecx, dword [esp + 0x4c]
mov edi, dword [ecx]
mov eax, dword [edi + 0x44]
test eax, eax
je 0x41187e
push eax
call dword [0x8303d0]
pop ecx
mov ecx, dword [esp + 0x74]
mov esi, dword [ecx + 0x244]
mov eax, esi
mov edx, 2
call fcn.00416b20
test eax, eax
jne 0x4118f0
mov eax, dword [esi + 0x3c]
add eax, 0x28
mov dword [esp + 0x2c], eax
call fcn.00498e60
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
xor edx, edx
mov eax, dword [esp + 0x2c]
mov dword [eax + 0x14], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], edx
mov ecx, dword [esp + 0x48]
mov dword [eax], ecx
mov edi, dword [esp + 0x40]
mov dword [eax + 4], edi
mov edx, 4
mov word [eax + 0x1c], dx
mov byte [eax + 0x1e], 1
mov esi, dword [esi]
mov eax, dword [esi + 0x44]
test eax, eax
je 0x4118f0
push eax
call dword [0x8303d0]
pop ecx
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x244]
call fcn.0048ecb4
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x244]
call fcn.00416ab4
jmp 0x411a26
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0x250]
mov dword [esp + 0x50], eax
mov edx, 1
call fcn.00416b20
test eax, eax
jne 0x411996
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x20], eax
call fcn.00498e60
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
xor eax, eax
mov edx, dword [esp + 0x20]
mov dword [edx + 0x14], eax
mov dword [edx + 0x24], eax
mov dword [edx + 0x20], eax
mov dword [edx], edi
mov dword [edx + 4], esi
mov esi, 4
mov word [edx + 0x1c], si
mov byte [edx + 0x1e], 1
mov ecx, dword [esp + 0x50]
mov edi, dword [ecx]
mov eax, dword [edi + 0x44]
test eax, eax
je 0x411996
push eax
call dword [0x8303d0]
pop ecx
mov ecx, dword [esp + 0x74]
mov esi, dword [ecx + 0x250]
mov eax, esi
mov edx, 2
call fcn.00416b20
test eax, eax
jne 0x411a08
mov eax, dword [esi + 0x3c]
add eax, 0x28
mov dword [esp + 0x28], eax
call fcn.00498e60
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
xor edx, edx
mov eax, dword [esp + 0x28]
mov dword [eax + 0x14], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], edx
mov ecx, dword [esp + 0x44]
mov dword [eax], ecx
mov edi, dword [esp + 0x3c]
mov dword [eax + 4], edi
mov edx, 4
mov word [eax + 0x1c], dx
mov byte [eax + 0x1e], 1
mov esi, dword [esi]
mov eax, dword [esi + 0x44]
test eax, eax
je 0x411a08
push eax
call dword [0x8303d0]
pop ecx
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x250]
call fcn.0048ecb4
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 0x250]
call fcn.00416ab4
mov dword [esp + 0x5c], eax
inc ebx
cmp dword [esp + 0x5c], 0
je 0x411693
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x70]
call fcn.004c69c4
mov eax, edi
add esp, 0x84
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, 7
add esp, 0x84
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x2c], ebx
mov edx, dword [esp + 0x34]
lea ebx, [esi + eax*4]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x6c], esi
cmp ecx, edx
jne 0x411aa1
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
lea edx, [ecx*4]
lea edx, [edx + eax*4]
mov edi, dword [ebx + eax*4]
mov dword [esi + edx], edi
inc eax
jmp 0x41161e
mov ebx, dword [esp + 0x30]
mov ebx, dword [ebx + ecx*4]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
mov edi, dword [esi + edi*4]
mov esi, dword [esp + 0x28]
fld dword [esi + ebx*4]
fcomp dword [esi + edi*4]
fnstsw ax
sahf
jbe 0x411ae4
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
lea edx, [ecx*4]
lea edx, [edx + eax*4]
mov edi, dword [ebx + eax*4]
mov dword [esi + edx], edi
inc eax
jmp 0x41161e
mov eax, dword [esp + 0x20]
mov dword [eax + ecx*4], ebx
inc ecx
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x38]
jl 0x411a7b
lea esi, [esi]
mov eax, ebx
mov esi, dword [esp + 0x6c]
cmp ecx, edx
jl 0x411a6c
jmp 0x41165c
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
call fcn.00416280
mov dword [esp + 0x6c], esi
mov edx, edi
cmp ebx, dword [esp + 0x78]
jge 0x411e34
mov esi, dword [esp + 0x6c]
mov edi, dword [esi + ebx*4]
lea esi, [edi + edi*2]
shl esi, 4
add esi, dword [esp + 0x70]
lea eax, [esp + 0x60]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov edx, esi
mov ecx, dword [ebp + 0x14]
call fcn.0040e640
mov edx, eax
test edx, edx
jne 0x411e2b
mov edi, dword [esp + 0x60]
cmp dword [ebp + 0x14], 0
jle 0x411c48
mov dword [esp + 0x58], ebx
mov dword [esp + 0x38], esi
mov dword [esp + 0x4c], edi
mov eax, dword [esi]
mov dword [esp + 0x40], eax
mov esi, dword [esi + 4]
mov dword [esp + 0x48], esi
mov ecx, esi
sar ecx, 0x18
mov dword [esp + 0x50], ecx
mov edi, esi
sar edi, 0x1f
mov edx, esi
sar edx, 0x10
mov dword [esp + 0x54], edx
xor ecx, edx
mov edx, edi
xor edx, edi
mov ebx, esi
sar ebx, 8
xor ecx, ebx
xor edx, edi
xor ecx, esi
xor edx, edi
mov edi, eax
shrd edi, esi, 0x18
xor ecx, edi
xor edx, dword [esp + 0x50]
mov edi, eax
shrd edi, esi, 0x10
xor ecx, edi
xor edx, dword [esp + 0x54]
mov edi, eax
shrd edi, esi, 8
xor ecx, edi
xor edx, ebx
xor ecx, eax
xor edx, esi
mov dword [esp + 0x44], ecx
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x58]
jge 0x411bfa
mov eax, ecx
add eax, 0x7f
mov dword [esp + 0x44], eax
adc edx, 0
mov eax, dword [esp + 0x44]
shrd eax, edx, 7
shl eax, 7
sub ecx, eax
mov edx, dword [esp + 0x74]
mov ecx, dword [edx + ecx*4 + 0x28]
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x411c48
mov dword [esp + 0x38], esi
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x40]
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 0xc]
sub edx, esi
sub eax, ebx
or edx, eax
je 0x411e3b
mov ecx, dword [ecx + 0x1c]
test ecx, ecx
jne 0x411c27
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov edx, edi
mov ecx, esi
call fcn.0040fb50
test eax, eax
je 0x411ca1
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0x74]
cmp eax, dword [edx + 0x230]
jle 0x411c8d
mov eax, dword [edi + 8]
dec eax
or eax, dword [edi + 0xc]
je 0x411c8d
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x74]
mov dword [eax + 0x230], edx
mov dword [esp + 0xc], edx
mov edx, edi
mov ecx, esi
call fcn.004105a0
jmp 0x411cfe
mov eax, dword [ebp + 0x14]
mov dword [esp + 0xc], eax
mov eax, edx
mov edx, edi
mov ecx, esi
call fcn.00412160
jmp 0x411cfe
mov eax, dword [esp + 0x74]
mov edx, edi
mov ecx, esi
call fcn.0040fdf0
cmp dword [ebp + 0x14], 0
jne 0x411cda
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov esi, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x74]
call fcn.00413e04
jmp 0x411cfe
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov esi, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x74]
call fcn.00413ef4
mov edi, eax
mov esi, dword [esp + 0x60]
test esi, esi
je 0x411d11
mov eax, dword [esi + 0x10]
dec eax
mov dword [esi + 0x10], eax
je 0x411d18
xor edx, edx
jmp 0x411e25
mov eax, dword [esi + 8]
dec eax
or eax, dword [esi + 0xc]
jne 0x411d2c
mov eax, dword [esp + 0x74]
mov dword [eax + 0x1c], 0xffffffff
mov edx, dword [esi]
test edx, edx
je 0x411d41
mov eax, dword [esp + 0x74]
call fcn.004137e0
mov edx, eax
test edx, edx
jne 0x411d4e
mov eax, dword [esp + 0x74]
mov edx, esi
call fcn.00417880
mov edx, eax
mov eax, dword [esi + 8]
mov dword [esp + 0x34], eax
mov ecx, dword [esi + 0xc]
or eax, ecx
je 0x411e16
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
mov esi, ecx
mov edi, esi
sar edi, 0x18
mov ebx, esi
sar ebx, 0x1f
mov ecx, esi
sar ecx, 0x10
mov dword [esp + 0x2c], ecx
mov eax, edi
xor eax, ecx
mov ecx, ebx
xor ecx, ebx
mov edx, esi
sar edx, 8
mov dword [esp + 0x30], edx
xor eax, edx
xor ecx, ebx
xor eax, esi
xor ecx, ebx
mov edx, dword [esp + 0x34]
mov ebx, edx
shrd ebx, esi, 0x18
xor eax, ebx
xor ecx, edi
mov edi, edx
shrd edi, esi, 0x10
xor eax, edi
xor ecx, dword [esp + 0x2c]
mov ebx, edx
shrd ebx, esi, 8
xor eax, ebx
xor ecx, dword [esp + 0x30]
xor eax, edx
mov dword [esp + 0x20], eax
xor ecx, esi
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x58]
jge 0x411de4
add eax, 0x7f
adc ecx, 0
shrd eax, ecx, 7
shl eax, 7
mov ecx, dword [esp + 0x20]
sub ecx, eax
mov eax, dword [esp + 0x74]
lea ecx, [eax + ecx*4]
add ecx, 0x28
mov eax, dword [ecx]
cmp eax, esi
je 0x411e0a
lea ecx, [eax + 0x1c]
mov eax, dword [ecx]
cmp eax, esi
jne 0x411e01
mov eax, dword [esi + 0x1c]
mov dword [ecx], eax
mov dword [esi + 0x1c], 0
mov eax, esi
mov dword [esp + 0x5c], edx
call fcn.004c69c4
mov edx, dword [esp + 0x5c]
test edi, edi
je 0x411e2b
mov edx, edi
inc ebx
test edx, edx
je 0x411b2a
mov edi, edx
jmp 0x411a3a
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov edx, dword [ecx]
call fcn.004137e0
test edi, edi
je 0x411e59
inc dword [edi + 0x10]
mov eax, dword [esp + 0x3c]
mov dword [eax], edi
jmp 0x411c48