Function at 0x525520
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5cb0f5
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x330
mov eax, dword [0x623ec0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edx, ecx
mov dword [ebp - 0x2f4], edx
mov eax, dword [edx + 0x1aa130]
mov edi, dword [ebx + 0x24]
mov dword [ebp - 0x4c], edi
cmp dword [eax + 0x28], 1
je case.0x525865.83
mov eax, dword [0x9c25d8]
cmp dword [eax + 0x434], 1
je case.0x525865.83
mov eax, dword [edx + 0x4c]
mov ecx, 0x3e8
cmp byte [eax + 0xa3d], 1
jne 0x5255af
cmp word [eax + 0x614], cx
jl case.0x525865.83
cmp byte [eax + 0xa2d], 0
jne case.0x525865.83
mov dword [edx + 0x26f28], 0
cmp dword [eax + 0xa30], 1
je case.0x525865.83
mov ecx, dword [0x9c25ac]
xor esi, esi
mov dword [ebp - 0x328], esi
mov dword [ebp - 0x330], 1
lea edi, [ecx + 0x8d0]
mov dword [ebp - 0x32c], edi
test edi, edi
mov edi, dword [ebp - 0x4c]
je 0x525615
test dword [ecx + 0xbec], 0x20000000
cmovne esi, dword [ebp - 0x330]
mov dword [ebp - 0x328], esi
test edi, edi
je 0x525621
mov dword [ebp - 0x2fc], edi
jmp 0x525631
mov edi, dword [edx + 0x100]
mov dword [ebp - 0x2fc], edi
test edi, edi
je 0x525650
cmp byte [edi + 0xa25], 1
jne 0x525650
cmp dword [edi + 0x218], 0x42
jne 0x525650
cmp byte [eax + 0xa36], 0
je case.0x525865.83
mov dword [edx + 0x26f20], 0
movsx esi, byte [ecx + 0x10e1]
mov cl, byte [esi + ecx + 0x10e2]
mov al, cl
add al, 0x5f
cmp cl, 0x68
movzx edx, al
movzx eax, cl
cmovbe edx, eax
mov dword [ebp - 0x2f8], edx
test edi, edi
je 0x525694
cmp dl, 6
jne 0x525694
cmp dword [edi + 0x218], 0x42
je case.0x525865.83
movzx eax, dl
mov ecx, eax
mov dword [ebp - 0x334], 0xffffffff
mov dword [ebp - 0x300], eax
call fcn.004b3d50
test eax, eax
je case.0x525865.83
mov edi, dword [0x9c25b0]
mov edx, dword [edi + 0x60]
test edx, edx
je 0x525814
test esi, esi
jns 0x5256d2
mov esi, 9
jmp 0x5256da
cmp esi, 9
jle 0x5256da
sub esi, 0xa
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [eax + 0x1a9a1c]
cmp dword [ecx + 0x28], 0
je 0x525740
movss xmm0, dword [ecx + 0x68]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x52570b
movss xmm0, dword [ecx + 0x6c]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x525732
mov edx, dword [ebp - 0x2f4]
mov eax, dword [edx + 0x1a9a18]
mov eax, dword [eax + 0x68]
mov dword [ecx + 0x68], eax
mov eax, dword [edx + 0x1a9a18]
mov ecx, dword [edx + 0x1a9a1c]
mov eax, dword [eax + 0x6c]
mov dword [ecx + 0x6c], eax
mov edx, dword [edi + 0x60]
mov edi, dword [ebp - 0x2f4]
mov ecx, dword [edi + 0x1a9a1c]
jmp 0x525746
mov ecx, dword [eax + 0x1a9a18]
mov eax, dword [ecx + 0x1f4]
movss xmm2, dword [0x626b2c]
mov edi, dword [0x9c25a4]
push 1
movss xmm1, dword [eax + 0xc]
divss xmm1, xmm2
mov eax, dword [edi + 0xa8]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605750]
cvtpd2ps xmm0, xmm0
mulss xmm1, xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm0
movss xmm0, dword [ecx + 0x6c]
addss xmm1, dword [ecx + 0x68]
movss dword [edx + 0x50], xmm0
mov ecx, dword [0x9c25b0]
movss dword [edx + 0x4c], xmm1
movss xmm1, dword [0x6050fc]
mov eax, dword [edi + 0xa8]
divss xmm1, xmm2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605750]
mov eax, dword [ecx + 0x60]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [eax + 0x54], xmm0
mov eax, dword [edi + 0xa8]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605750]
mov eax, dword [ecx + 0x60]
cvtpd2ps xmm0, xmm0
mulss xmm1, xmm0
movss dword [eax + 0x58], xmm1
mov ecx, dword [ecx + 0x60]
mov eax, dword [ecx]
call dword [eax + 0x60]
mov ecx, dword [ebp - 0x32c]
mov dl, 0x15
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
mov ecx, dword [ebp - 0x2f8]
cmp cl, 0x4f
jne 0x525837
cmp eax, 0x65
jmp 0x525849
cmp cl, 0x4b
jne 0x525841
cmp eax, 0x65
jmp 0x525849
cmp cl, 0x5c
jne 0x52584f
cmp eax, 0x29
jne case.0x525865.83
movsx eax, cl
add eax, 0xffffffad
cmp eax, 0x10
ja case.0x525865.85
movzx eax, byte [eax + 0x528dc8]
jmp dword [eax*4 + 0x528db8]
mov esi, dword [ebp - 0x2f4]
push 0
push 0
push 0
lea ecx, [esi + 0x27f20]
call fcn.004b2890
mov edx, dword [esi + 0x6a678]
xor eax, eax
mov ecx, esi
cmp dword [edx + 0x28], eax
sete al
push eax
call fcn.0054a620
mov eax, dword [ebp - 0x330]
jmp 0x525db5
xor esi, esi
mov ecx, dword [0x9c25ac]
lea edx, [esi + 0x3a99]
push edx
mov edi, 0x2ea
mov dword [ebp - 0x334], edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
mov ecx, eax
test ecx, ecx
je 0x5259ac
cmp word [ecx + 0xf4], di
mov edi, dword [ebp - 0x2f4]
jne 0x5259b2
mov edx, dword [edi + 0x4c]
movss xmm0, dword [edx + 0x28]
ucomiss xmm0, dword [ecx + 0x274]
lahf
test ah, 0x44
jp 0x5259b2
movss xmm0, dword [edx + 0x2c]
ucomiss xmm0, dword [ecx + 0x278]
lahf
test ah, 0x44
jp 0x5259b2
mov esi, dword [ebp - 0x2f4]
mov eax, dword [ebp - 0x2f8]
mov ecx, dword [esi + 0x4c]
cmp al, 0xf8
jae 0x525adf
mov eax, dword [ebp - 0x300]
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e938], 1
je 0x525adf
mov edi, dword [ebp - 0x2fc]
test edi, edi
je 0x525a0b
cmp dword [eax + 0x62e928], 1
jne 0x5259d1
cmp byte [edi + 0x214], 1
je 0x525adf
movzx eax, word [ecx + 0x878]
mov esi, eax
test ax, ax
je 0x5259cb
mov eax, dword [0x9c25ac]
movzx eax, word [eax + 0x10fe]
mov edx, eax
test ax, ax
je 0x5259cb
movzx eax, word [edi + 0x878]
mov ecx, eax
cmp si, ax
je 0x525999
cmp dx, cx
jne 0x5259cb
push dword [ebx + 0x1c]
mov ecx, dword [ebp - 0x2f4]
call fcn.0051b940
jmp 0x525db5
mov edi, dword [ebp - 0x2f4]
inc esi
cmp esi, 0x64
jl 0x5258a6
push dword [ebx + 0x1c]
mov ecx, edi
call fcn.0051b940
jmp 0x525db5
mov esi, dword [ebp - 0x2f4]
mov eax, dword [ebp - 0x2f8]
cmp al, 0x1f
jne 0x525a11
cmp byte [edi + 0x214], 0
jne 0x525a11
mov eax, dword [0x9c25ac]
movzx ecx, word [edi + 0x878]
mov edx, ecx
cmp word [eax + 0x10fe], cx
je 0x525a0b
mov eax, dword [esi + 0x4c]
cmp word [eax + 0x878], dx
jne 0x525adf
mov eax, dword [ebp - 0x2f8]
cmp dword [0x1ff59f0], 0
je 0x525aee
cmp dword [0x9c2598], 0
jne 0x525bce
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x525a7b
test edi, edi
je 0x525a7b
mov ecx, dword [esi + 0x4c]
mov al, byte [edi + 0xa5a]
cmp al, byte [ecx + 0xa5a]
jne 0x525a7b
mov eax, dword [edi + 0x20]
test eax, eax
je 0x525a7b
cmp eax, 0x3e8
jae 0x525a7b
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
je 0x525adf
cmp dword [0x9c2598], 0
jne 0x525bce
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x525bce
test edi, edi
je 0x525bce
cmp byte [edi + 0x215], 1
jne 0x525bce
mov eax, dword [0x9c25ac]
movzx ecx, word [edi + 0x878]
cmp word [eax + 0x10fc], cx
je 0x525bce
test cx, cx
je 0x525bce
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
jne 0x525bce
push dword [ebx + 0x1c]
mov ecx, esi
call fcn.0051b940
jmp 0x525db5
mov eax, dword [ebp - 0x4c]
test eax, eax
je 0x525b24
mov al, byte [eax + 0xa5a]
test al, al
jle 0x525b24
mov ecx, dword [esi + 0x4c]
mov dl, byte [ecx + 0xa5a]
test dl, dl
jle 0x525b24
cmp al, dl
jne 0x525b24
cmp dword [0x9c2598], 0
je 0x525adf
mov eax, dword [ecx]
mov eax, dword [eax + 0x60]
call eax
test eax, eax
jne 0x525adf
cmp dword [0x9c2598], 0
jne 0x525bce
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x525b8b
mov eax, dword [esi + 0x4c]
cmp byte [eax + 0xa5a], 0
jle 0x525b8b
test edi, edi
je 0x525b8b
cmp byte [edi + 0xa5a], 0
jne 0x525b8b
mov eax, dword [edi + 0x20]
test eax, eax
je 0x525b8b
cmp eax, 0x3e8
jae 0x525b8b
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
je 0x525adf
cmp dword [0x9c2598], 0
jne 0x525bce
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x525bce
test edi, edi
je 0x525bce
cmp byte [edi + 0x215], 1
jne 0x525bce
mov eax, dword [0x9c25ac]
movzx ecx, word [edi + 0x878]
cmp word [eax + 0x10fc], cx
je 0x525bce
test cx, cx
jne 0x525adf
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [esi + 0x26f04], 9
mov eax, dword [eax + 0x62e8ec]
jl 0x525bf2
cmp eax, 2
jl 0x525bf2
dec eax
mov edx, dword [esi + 0x4c]
lea ecx, [eax - 1]
cmp byte [edx + 0xa34], 1
cmovne ecx, eax
cmp ecx, 1
cmovl ecx, dword [ebp - 0x330]
test edi, edi
je 0x525c2f
cmp dword [edi + 0x218], 0x42
jne 0x525c2f
cmp byte [edi + 0xa25], 1
jne 0x525c2f
cmp byte [edx + 0xa36], 0
je case.0x525865.83
mov eax, dword [ebp - 0x2f8]
imul ecx, ecx, 0x3e8
movzx eax, al
add ecx, dword [esi + eax*4 + 0x1aa454]
cmp dword [ebx + 0x1c], ecx
jb case.0x525865.83
cvttss2si eax, dword [edx + 0x28]
cmp eax, 0x93a
jl 0x525c78
cmp eax, 0x942
jg 0x525c78
cvttss2si eax, dword [edx + 0x2c]
cmp eax, 0xf57
jl 0x525c78
cmp eax, 0xf5f
jle case.0x525865.83
mov eax, dword [esi + 0x276b4]
mov edx, dword [ebp - 0x2f8]
add eax, 0x3e8
cmp dword [ebx + 0x1c], eax
jbe 0x527cdf
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + 0x62e8e4]
test eax, eax
je 0x525cbd
cmp eax, 3
je 0x525cbd
cmp eax, 4
je 0x525cbd
cmp eax, 5
je 0x525cbd
cmp eax, 6
jne 0x527cdf
mov esi, dword [esi + 0x4c]
movsx ecx, word [esi + 0x614]
cmp dl, 0x60
jae 0x525cf5
mov edi, dword [0x9c25ac]
movzx eax, byte [edi + 0x8e4]
lea ecx, [eax + eax*2]
movzx eax, dl
shl ecx, 3
sub eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
movzx ecx, word [edi + eax*2 + 0x956]
mov edi, dword [ebp - 0x2f4]
push ecx
mov eax, dword [edi + 0x27df4]
mov edi, dword [0x9c25ac]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x2f8]
movzx ecx, al
movzx edx, byte [edi + 0xbfb]
call fcn.00499890
add esp, 4
cmp eax, dword [edi + 0x948]
jle 0x525dd5
push 0xe6c
call fcn.0046677d
mov esi, eax
add esp, 4
mov dword [ebp - 0x33c], esi
mov dword [ebp - 4], 0
push 0xe6c
push 0
push esi
call fcn.00468b40
add esp, 0xc
push 0
push ecx
push 0x77777777
sub esp, 0x10
mov dword [esp + 8], 0x41800000
mov dword [esp + 4], 0x43960000
mov dword [esp], 0
push 0xffffaaaa
push 0x7da6b0
xorps xmm3, xmm3
mov ecx, esi
call fcn.004c9d30
mov dword [ebp - 4], 0xffffffff
test eax, eax
je 0x525da5
mov ecx, dword [ebp - 0x48]
push eax
call fcn.004c82d0
push ecx
mov ecx, 0x21
call fcn.005bc750
add esp, 4
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0046676f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x20
cmp byte [ebp - 0x2f8], 0x55
jne 0x525e52
movzx eax, word [esi + 0x640]
imul ecx, eax, 0x64
mov eax, dword [0x9c25ac]
cmp ecx, dword [eax + 0x8e8]
jle 0x525e52
push 0xe6c
call fcn.0046677d
mov esi, eax
add esp, 4
mov dword [ebp - 0x33c], esi
mov dword [ebp - 4], 1
push 0xe6c
push 0
push esi
call fcn.00468b40
add esp, 0xc
push 0
push ecx
push 0x77777777
sub esp, 0x10
mov dword [esp + 8], 0x41800000
mov dword [esp + 4], 0x43960000
mov dword [esp], 0
push 0xffffaaaa
push 0x7de530
jmp 0x525d87
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x50]
call eax
cmp eax, 1
jne 0x525e7c
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
je case.0x525865.83
push 0xa8
lea eax, [ebp - 0x2f0]
push 0
push eax
call fcn.00468b40
mov esi, dword [ebp - 0x2f4]
mov eax, 0x367
mov word [ebp - 0x2ec], ax
add esp, 0xc
mov edi, dword [esi + 0x4c]
mov ecx, dword [esi + 0x1a9c2c]
movzx edx, cx
movzx eax, word [edi + 0x20]
mov word [ebp - 0x2ea], ax
movzx eax, word [edi + 0x20]
mov word [ebp - 0x2ca], ax
cvttss2si eax, dword [edi + 0x28]
mov word [ebp - 0x2ce], ax
cvttss2si eax, dword [edi + 0x2c]
mov word [ebp - 0x2c4], ax
cvttss2si eax, dword [edi + 0x28]
mov word [ebp - 0x2c6], ax
cvttss2si eax, dword [edi + 0x2c]
mov word [ebp - 0x2cc], ax
movzx eax, cx
test ecx, ecx
je 0x525f20
mov word [ebp - 0x2ce], ax
mov word [ebp - 0x2c6], ax
mov ax, word [esi + 0x1a9c30]
mov word [ebp - 0x2c4], ax
mov word [ebp - 0x2cc], ax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
mov word [ebp - 0x2c8], ax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
mov dword [ebp - 0x2bc], 0xffffffff
mov byte [ebp - 0x2bf], 0
mov byte [ebp - 0x2c2], 0xff
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + 0x62e8e4]
cmp eax, 5
jne 0x526484
mov eax, dword [esi + 0x34]
mov byte [ebp - 0x2c1], 0
mov dword [ebp - 0x304], 0
mov esi, dword [eax + 0x10]
test esi, esi
je 0x525899
movss xmm1, dword [ebx + 0x18]
movss xmm0, dword [ebx + 0x10]
subss xmm1, dword [edi + 0x2c]
subss xmm0, dword [edi + 0x28]
call fcn.0045e630
movzx ecx, word [edi + 0x640]
mov eax, 0x1b4e81b5
mul ecx
cvtss2sd xmm0, xmm0
mov ecx, 3
mov eax, edx
shr eax, 3
cmp eax, ecx
movsd qword [ebp - 0x340], xmm0
cmovg eax, ecx
xor ecx, ecx
mov dword [ebp - 0x308], eax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
mov dword [ebp - 0x31c], eax
nop dword [eax]
nop dword [eax + eax]
mov edi, dword [ebp - 0x2f4]
test esi, esi
je 0x527907
cmp ecx, 0x3e8
jg 0x527907
mov eax, dword [edi + 0x4c]
inc ecx
mov dword [ebp - 0x30c], ecx
cmp esi, eax
jne 0x52601d
mov esi, dword [esi + 0xc]
jmp 0x525ff6
cvttss2si ecx, dword [esi + 0x28]
cvttss2si edx, dword [eax + 0x28]
mov dword [ebp - 0x320], ecx
cvttss2si ecx, dword [esi + 0x2c]
mov dword [ebp - 0x314], ecx
cvttss2si ecx, dword [eax + 0x2c]
mov eax, edi
mov edi, dword [eax + 0x1a9c2c]
mov dword [ebp - 0x324], ecx
test edi, edi
je 0x52605b
mov ecx, dword [eax + 0x1a9c30]
mov dword [ebp - 0x324], ecx
mov eax, dword [ebp - 0x320]
cmove edi, edx
sub eax, edi
mov dword [ebp - 0x300], edi
mov edx, edi
sub edx, dword [ebp - 0x320]
cmp edi, dword [ebp - 0x320]
mov edi, dword [ebp - 0x314]
cmovle edx, eax
mov eax, dword [ebp - 0x314]
sub eax, ecx
sub ecx, edi
cmp dword [ebp - 0x324], edi
mov edi, dword [ebp - 0x300]
cmovle ecx, eax
cmp edx, 7
jg 0x5260b2
cmp ecx, 7
jg 0x5260b2
lea eax, [edx + ecx*8]
mov ecx, dword [eax*4 + 0x5ec9c8]
jmp 0x5260bc
cmp edx, ecx
jg 0x5260b9
inc ecx
jmp 0x5260bc
lea ecx, [edx + 1]
cmp dword [esi + 0x218], 0x38
jne 0x5260da
cmp word [esi + 0x172], 0
jne 0x5260da
sub ecx, 0xc
mov eax, 0
cmovs ecx, eax
mov eax, dword [ebp - 0x308]
add eax, 3
cmp ecx, eax
jg 0x526433
mov eax, dword [ebp - 0x2f4]
movss xmm1, dword [esi + 0x2c]
movss xmm0, dword [esi + 0x28]
mov eax, dword [eax + 0x4c]
subss xmm1, dword [eax + 0x2c]
subss xmm0, dword [eax + 0x28]
call fcn.0045e630
cvtss2sd xmm0, xmm0
xorps xmm1, xmm1
subsd xmm0, qword [ebp - 0x340]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jb 0x526149
andps xmm0, xmmword [0x6057c0]
call fcn.005bdc60
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605750]
cvtpd2ps xmm0, xmm0
movss xmm1, dword [0x604d74]
comiss xmm1, xmm0
jbe 0x526433
mov eax, dword [ebp - 0x320]
mov edx, dword [ebp - 0x324]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x314]
mov dword [ebp - 0x310], eax
mov eax, dword [ebp - 0x2f4]
push ecx
add eax, 0x118
mov ecx, edi
push eax
lea eax, [ebp - 0x310]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.00498290
add esp, 0x10
cmp dword [esi + 0x218], 0x38
jne 0x5261ba
cmp word [esi + 0x172], 0
jne 0x5261ba
mov edi, dword [ebp - 0x314]
mov ecx, edi
mov eax, dword [ebp - 0x320]
jmp 0x5261c9
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x310]
mov edi, dword [ebp - 0x314]
cmp eax, dword [ebp - 0x320]
jne 0x526462
cmp ecx, edi
jne 0x526462
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
test eax, eax
jne 0x526206
mov eax, dword [ebp - 0x31c]
cmp dword [eax + 0x62e928], 1
jne 0x526206
cmp dword [esi + 0x20], 0x3e8
jb 0x526462
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
jne 0x5263f0
mov eax, dword [ebp - 0x31c]
cmp dword [eax + 0x62e928], 1
jne 0x5263f0
cmp byte [esi + 0x214], 0
jne 0x526462
mov edi, dword [0x9c2598]
mov edx, dword [0x1ff59f0]
test edi, edi
jne 0x526361
cmp dword [esi + 0x20], 0x3e8
jae 0x526299
mov eax, dword [0x9c25ac]
mov ax, word [eax + 0x10fc]
cmp ax, word [esi + 0x878]
je 0x526299
test edx, edx
je 0x526289
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
je 0x52629f
cmp byte [esi + 0xa5a], al
jne 0x52629f
mov ecx, dword [ebp - 0x30c]
add esi, 0xc
mov esi, dword [esi]
jmp 0x525ff0
mov ecx, dword [ebp - 0x2f4]
cmp byte [esi + 0x215], 1
jne 0x526361
movzx ecx, word [esi + 0x878]
mov eax, ecx
mov dword [ebp - 0x300], eax
mov eax, dword [0x9c25ac]
cmp word [eax + 0x10fc], cx
je 0x52630e
test cx, cx
je 0x52630e
test edx, edx
je 0x526470
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x526314
cmp byte [esi + 0xa5a], al
jne 0x526314
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
je 0x526470
mov edx, dword [0x1ff59f0]
mov edi, dword [0x9c2598]
mov ecx, dword [ebp - 0x2f4]
cmp byte [esi + 0x215], 1
jne 0x526361
cmp word [esi + 0x878], 0
jne 0x526361
test edx, edx
je 0x526289
mov eax, dword [ecx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x526361
cmp byte [esi + 0xa5a], al
jne 0x526361
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
je 0x526289
mov edx, dword [0x1ff59f0]
mov edi, dword [0x9c2598]
mov eax, dword [ebp - 0x2f4]
mov eax, dword [eax + 0x4c]
mov cl, byte [eax + 0xa5a]
test cl, cl
jle 0x5263a6
mov al, byte [esi + 0xa5a]
test al, al
jle 0x5263a6
cmp cl, al
jne 0x5263a6
test edi, edi
jne 0x5263c4
test edx, edx
jne 0x526393
cmp dword [esi + 0x20], 0x3e8
jb 0x5263c4
mov ecx, dword [ebp - 0x30c]
mov eax, 0xc
mov esi, dword [esi + eax]
jmp 0x525ff0
test edi, edi
jne 0x5263c4
test edx, edx
jle 0x5263c4
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
jne 0x5263c4
cmp dword [esi + 0x20], 0x3e8
jb 0x526393
cmp dword [esi + 0x20], 0x3e8
jb 0x5263ea
cmp byte [esi + 0x214], 0
jne 0x5263ea
cmp byte [esi + 0x215], 0
jne 0x5263ea
mov ecx, esi
call fcn.00573860
test eax, eax
jne 0x526393
mov edi, dword [ebp - 0x314]
cmp byte [esi + 0x211], 1
je 0x526462
mov ecx, dword [ebp - 0x304]
mov ax, word [esi + 0x20]
mov word [ebp + ecx*8 - 0x2b4], ax
mov eax, dword [ebp - 0x320]
mov dword [ebp + ecx*8 - 0x2b0], 0xffffffff
inc ecx
mov dword [ebp - 0x304], ecx
mov word [ebp - 0x2c6], ax
mov word [ebp - 0x2cc], di
jmp 0x526439
mov ecx, dword [ebp - 0x304]
mov eax, dword [ebp - 0x31c]
mov esi, dword [esi + 0xc]
cmp dword [eax + 0x62e92c], ecx
jle 0x527907
cmp ecx, 0xd
jge 0x527907
mov ecx, dword [ebp - 0x30c]
jmp 0x525ff0
mov esi, dword [esi + 0xc]
mov ecx, dword [ebp - 0x30c]
jmp 0x525ff0
mov ecx, dword [ebp - 0x30c]
mov eax, 0xc
add esi, eax
mov esi, dword [esi]
jmp 0x525ff0
cmp eax, 3
je 0x526a27
cmp eax, 4
je 0x526a27
cmp eax, 6
je 0x526a27
mov eax, dword [ebp - 0x2f8]
cmp al, 0x1d
je 0x52671e
cmp al, 0x2c
je 0x52671e
cmp al, 0x2a
jne 0x5264fb
cmp byte [edi + 0x214], 1
mov ecx, 0x7da730
mov eax, 0x7da7b0
cmove eax, ecx
mov ecx, dword [esi + 0x108]
push 0x3e8
push eax
call fcn.004cf030
mov ecx, dword [esi + 0x108]
push 1
push 1
mov eax, dword [ecx]
call dword [eax + 0x88]
mov eax, dword [ebp - 0x330]
jmp 0x525db5
cmp al, 0x49
jne 0x526681
mov eax, dword [0x9c25ac]
mov eax, dword [eax + 0x948]
cmp eax, dword [0x630448]
jl 0x525899
mov eax, dword [ebx + 0x1c]
mov ecx, edi
sub eax, dword [ecx + 0x7dc]
cmp eax, 0x3e8
jbe 0x525899
cvttss2si eax, dword [ebx + 0x10]
push 0x30
push 0
mov dword [ebp - 0x4c], eax
cvttss2si eax, dword [ebx + 0x18]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x44]
cvttss2si edi, dword [ecx + 0x28]
push eax
cvttss2si esi, dword [ecx + 0x2c]
call fcn.00468b40
mov eax, dword [ebp - 0x2f4]
add esp, 0xc
add eax, 0x118
mov edx, esi
mov ecx, edi
push 8
push eax
push 0xa
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0049a850
lea ecx, [ebp - 0x44]
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x526588
sub ecx, edx
je 0x525899
mov eax, dword [ebp - 0x2f4]
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x12c], 0
mov eax, dword [eax + 0x4c]
movlpd qword [ebp - 0x124], xmm0
movlpd qword [ebp - 0x11c], xmm0
movlpd qword [ebp - 0x114], xmm0
mov dword [ebp - 0x10c], 0
mov ax, word [eax + 0x20]
mov word [ebp - 0x126], ax
mov eax, 0x368
mov word [ebp - 0x128], ax
mov eax, dword [0x626df0]
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0x2f4]
movzx esi, si
mov word [ebp - 0xfa], si
mov word [ebp - 0xfc], cx
mov dword [eax + 0x1a9c3c], edi
movsx eax, si
mov esi, dword [ebp - 0x2f4]
mov word [ebp - 0x106], dx
mov word [ebp - 0x108], di
mov dword [ebp - 0x100], 6
mov dword [esi + 0x1a9c40], eax
movzx eax, cx
lea ecx, [ebp - 0x12c]
mov dword [esi + 0x1a9c2c], eax
movzx eax, dx
mov edx, 0x34
mov dword [esi + 0x1a9c30], eax
call fcn.0054f850
mov ecx, esi
call fcn.0051d990
mov ecx, dword [ebx + 0x1c]
mov dword [esi + 0x1aa578], ecx
mov eax, dword [esi + 0x4c]
mov dword [eax + 0x7dc], ecx
mov eax, dword [ebp - 0x330]
jmp 0x525db5
mov ax, word [edi + 0x20]
mov word [ebp - 0x2b4], ax
mov dword [ebp - 0x2b0], 0xffffffff
cvttss2si eax, dword [edi + 0x28]
mov word [ebp - 0x2c6], ax
cvttss2si eax, dword [edi + 0x2c]
mov word [ebp - 0x2cc], ax
test ecx, ecx
je 0x5266c7
mov ax, word [esi + 0x1a9c30]
mov word [ebp - 0x2c6], dx
mov word [ebp - 0x2cc], ax
mov edx, dword [ebp - 0x2f8]
cmp dl, 0x38
je 0x526703
cmp dl, 0x39
je 0x526703
cmp dl, 0x3a
je 0x526703
cmp dl, 0x3b
je 0x526703
cmp dl, 0x3c
je 0x526703
cmp dl, 0x3d
je 0x526703
cmp dl, 0x3e
je 0x526703
cmp dl, 0x3f
je 0x526703
cmp dl, 0xc8
je 0x526703
cmp dl, 0xd8
jne 0x527913
mov ecx, dword [ebx + 0x1c]
movzx eax, dl
mov dword [esi + eax*4 + 0x1aa454], ecx
mov eax, dword [esi + 0x4c]
mov dword [eax + 0x7dc], ecx
jmp 0x527913
cmp byte [edi + 0x214], 1
jne 0x526a0d
push 0x68
xor esi, esi
lea eax, [ebp - 0x160]
push esi
push eax
call fcn.00468b40
mov eax, dword [ebp - 0x2f4]
add esp, 0xc
mov edx, dword [ebp - 0x2f8]
mov dword [ebp - 0x324], esi
mov ecx, dword [eax + 0x1a9a2c]
mov dword [ebp - 0x320], ecx
cmp dword [ecx + 0x210], esi
jle 0x526a06
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
add eax, 0x62e92c
mov dword [ebp - 0x338], eax
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
add ecx, 0x214
mov dword [ebp - 0x300], eax
mov dword [ebp - 0x31c], ecx
nop dword [eax + eax]
mov edx, dword [ecx]
mov ecx, dword [0x9c25ac]
mov dword [ebp - 0x308], edx
push dword [edx + 0xe6c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
mov edi, eax
test edi, edi
je 0x5268a2
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [eax + 0x4c]
mov edx, dword [ecx]
mov edx, dword [edx + 0x54]
call edx
test eax, eax
jne 0x5267eb
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
je 0x5268a2
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx + 0x4c]
cvttss2si edx, dword [eax + 0x28]
cvttss2si eax, dword [eax + 0x2c]
mov dword [ebp - 0x304], eax
mov eax, dword [ecx + 0x1a9c2c]
test eax, eax
je 0x52681a
mov ecx, dword [ecx + 0x1a9c30]
mov dword [ebp - 0x304], ecx
cvttss2si ecx, dword [edi + 0x28]
cmove eax, edx
mov dword [ebp - 0x48], eax
cvttss2si edx, dword [edi + 0x2c]
sub eax, ecx
mov edi, ecx
sub edi, dword [ebp - 0x48]
cmp dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x304]
cmovg edi, eax
mov eax, edx
sub eax, ecx
sub ecx, edx
cmp dword [ebp - 0x304], edx
cmovle ecx, eax
cmp edi, 7
jg 0x526862
cmp ecx, 7
jg 0x526862
lea eax, [edi + ecx*8]
mov ecx, dword [eax*4 + 0x5ec9c8]
jmp 0x52686c
cmp edi, ecx
jg 0x526869
inc ecx
jmp 0x52686c
lea ecx, [edi + 1]
mov eax, dword [ebp - 0x300]
mov eax, dword [eax + 0x62e8f0]
add eax, dword [ebp - 0x328]
cmp ecx, eax
jge 0x5268a2
cmp esi, 0xd
jge 0x5268a7
mov eax, dword [ebp - 0x308]
mov dword [ebp + esi*8 - 0x15c], ecx
mov eax, dword [eax + 0xe6c]
mov dword [ebp + esi*8 - 0x160], eax
inc esi
cmp esi, 0xd
jl 0x5268ae
mov esi, 0xd
jmp 0x5268b6
test esi, esi
jle 0x5269d1
xor edi, edi
mov dword [ebp - 0x310], edi
nop
mov eax, dword [ebp + edi*8 - 0x160]
mov edx, edi
mov ecx, dword [ebp + edi*8 - 0x15c]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x334], eax
lea eax, [edi + 1]
cmp eax, esi
jge 0x52693c
mov edi, dword [ebp - 0x2fc]
mov dword [ebp - 0x2fc], edi
mov edi, dword [ebp + eax*8 - 0x15c]
mov dword [ebp - 0x308], edx
mov dword [ebp - 0x304], ecx
cmp ecx, edi
jle 0x52690d
mov ecx, dword [ebp + eax*8 - 0x160]
mov dword [ebp - 0x48], ecx
cmp dword [ebp - 0x304], edi
mov edx, eax
mov ecx, edi
cmovle edx, dword [ebp - 0x308]
cmovle ecx, dword [ebp - 0x304]
inc eax
cmp eax, esi
jl 0x5268e0
mov eax, dword [ebp - 0x2fc]
mov edi, dword [ebp - 0x310]
mov dword [ebp - 0x2fc], eax
mov eax, dword [ebp - 0x334]
mov dword [ebp + edx*8 - 0x160], eax
mov eax, dword [ebp + edi*8 - 0x15c]
mov dword [ebp + edx*8 - 0x15c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp + edi*8 - 0x160], eax
mov dword [ebp + edi*8 - 0x15c], ecx
inc edi
mov dword [ebp - 0x308], esi
mov dword [ebp - 0x310], edi
cmp edi, esi
jl 0x5268c0
mov eax, dword [ebp - 0x338]
xor ecx, ecx
mov edx, dword [ebp - 0x308]
xor esi, esi
mov edi, dword [eax]
mov eax, dword [ebp - 0x2fc]
mov dword [ebp - 0x2fc], eax
nop dword [eax + eax]
cmp edi, ecx
jle 0x5269d3
cmp ecx, 0xd
jge 0x5269d3
cmp esi, 0xd
jge 0x5269ca
mov ax, word [ebp + esi*8 - 0x160]
mov word [ebp + ecx*8 - 0x2b4], ax
mov dword [ebp + ecx*8 - 0x2b0], 0xffffffff
inc ecx
inc esi
cmp esi, edx
jl 0x5269a0
jmp 0x5269d3
xor esi, esi
mov eax, dword [ebp - 0x324]
mov edx, dword [ebp - 0x320]
inc eax
mov ecx, dword [ebp - 0x31c]
add ecx, 4
mov dword [ebp - 0x324], eax
mov dword [ebp - 0x31c], ecx
cmp eax, dword [edx + 0x210]
jl 0x5267a0
jmp 0x527907
mov esi, eax
jmp 0x527913
mov ax, word [edi + 0x20]
mov word [ebp - 0x2b4], ax
mov dword [ebp - 0x2b0], 0xffffffff
jmp 0x52790d
mov eax, dword [esi + 0x34]
mov byte [ebp - 0x2c1], 0
mov dword [ebp - 0x314], 0
mov edi, dword [eax + 0x10]
test edi, edi
je case.0x525865.83
cvttss2si edx, dword [ebx + 0x10]
mov esi, dword [ebp - 0x2fc]
cvttss2si ecx, dword [ebx + 0x18]
mov dword [ebp - 0x318], edx
mov dword [ebp - 0x30c], ecx
test esi, esi
je 0x526a7c
cvttss2si eax, dword [esi + 0x28]
mov dword [ebp - 0x318], eax
cvttss2si eax, dword [esi + 0x2c]
mov dword [ebp - 0x30c], eax
mov ecx, dword [ebp - 0x2f8]
xor edx, edx
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
add eax, 0x62e928
mov dword [ebp - 0x33c], eax
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
mov dword [ebp - 0x48], eax
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
mov dword [ebp - 0x338], eax
mov ecx, dword [ebp - 0x2f4]
nop dword [eax]
test edi, edi
je 0x5278ed
cmp edx, 0x3e8
jg 0x5278ed
cvttss2si eax, dword [edi + 0x28]
inc edx
mov dword [ebp - 0x320], edx
mov dword [ebp - 0x324], eax
cvttss2si eax, dword [edi + 0x2c]
mov dword [ebp - 0x304], eax
mov eax, dword [ebp - 0x2f8]
test al, al
je 0x526b1f
cmp al, 0x10
je 0x526b1f
cmp al, 7
je 0x526b1f
cmp al, 0x11
je 0x526b1f
cmp al, 0x17
je 0x526b1f
cmp al, 0x23
je 0x526b1f
cmp al, 0x27
je 0x526b1f
cmp al, 0x33
je 0x526b1f
cmp al, 0x37
jne 0x526c0c
test esi, esi
je 0x525899
cvttss2si eax, dword [esi + 0x28]
cvttss2si esi, dword [esi + 0x2c]
mov dword [ebp - 0x318], eax
mov dword [ebp - 0x30c], esi
mov esi, dword [ebp - 0x2fc]
cmp dword [esi + 0x218], 0x38
jne 0x526c06
cmp word [esi + 0x172], 0
jne 0x526c06
mov eax, dword [ecx + 0x4c]
mov ecx, dword [ecx + 0x1a9c2c]
cvttss2si edx, dword [eax + 0x28]
cvttss2si esi, dword [eax + 0x2c]
test ecx, ecx
je 0x526b81
mov eax, dword [ebp - 0x2f4]
mov esi, dword [eax + 0x1a9c30]
cmove ecx, edx
mov edx, dword [ebp - 0x318]
mov eax, ecx
sub eax, edx
sub edx, ecx
cmp ecx, dword [ebp - 0x318]
mov ecx, esi
cmovg edx, eax
mov eax, dword [ebp - 0x30c]
sub ecx, dword [ebp - 0x30c]
sub eax, esi
cmp esi, dword [ebp - 0x30c]
cmovle ecx, eax
cmp edx, 7
jg 0x526bc8
cmp ecx, 7
jg 0x526bc8
lea eax, [edx + ecx*8]
mov eax, dword [eax*4 + 0x5ec9c8]
jmp 0x526bd2
lea eax, [ecx + 1]
cmp edx, ecx
jle 0x526bd2
lea eax, [edx + 1]
add eax, 0xfffffff4
cmp eax, 1
jge 0x526bfa
mov eax, dword [ebp - 0x2fc]
cvttss2si esi, dword [eax + 0x28]
mov dword [ebp - 0x318], esi
mov esi, eax
cvttss2si edx, dword [esi + 0x2c]
mov dword [ebp - 0x30c], edx
jmp 0x526c00
mov esi, dword [ebp - 0x2fc]
mov edx, dword [ebp - 0x320]
mov eax, dword [ebp - 0x2f8]
cmp al, 0x5f
jne 0x526c40
cmp edi, esi
je 0x526c40
test esi, esi
je case.0x525865.83
cvttss2si edx, dword [esi + 0x28]
mov edi, dword [edi + 0xc]
cvttss2si ecx, dword [esi + 0x2c]
mov dword [ebp - 0x318], edx
mov edx, dword [ebp - 0x320]
mov dword [ebp - 0x30c], ecx
jmp 0x526ab3
movzx eax, word [edi + 0x878]
mov ecx, eax
test ax, ax
je 0x526c81
mov eax, dword [ebp - 0x33c]
cmp dword [eax], 1
jne 0x526c81
mov eax, dword [ebp - 0x2f4]
mov eax, dword [eax + 0x4c]
cmp word [eax + 0x878], cx
je 0x526c79
mov eax, dword [0x9c25ac]
cmp word [eax + 0x10fe], cx
jne 0x526c81
mov edi, dword [edi + 0xc]
jmp 0x526ab3
mov eax, dword [ebp - 0x2f4]
mov eax, dword [eax + 0x4c]
cvttss2si esi, dword [eax + 0x2c]
cvttss2si ecx, dword [eax + 0x28]
mov eax, dword [ebp - 0x2f4]
mov dword [ebp - 0x310], esi
mov edx, dword [eax + 0x1a9c2c]
test edx, edx
je 0x526cb6
mov esi, dword [eax + 0x1a9c30]
mov dword [ebp - 0x310], esi
mov eax, dword [ebp - 0x318]
cmove edx, ecx
sub eax, edx
mov ecx, edx
sub ecx, dword [ebp - 0x318]
cmp edx, dword [ebp - 0x318]
mov edx, dword [ebp - 0x30c]
cmovle ecx, eax
mov eax, edx
sub eax, esi
sub esi, edx
cmp dword [ebp - 0x310], edx
cmovle esi, eax
cmp ecx, 7
jg 0x526cfd
cmp esi, 7
jg 0x526cfd
lea eax, [ecx + esi*8]
mov esi, dword [eax*4 + 0x5ec9c8]
jmp 0x526d07
cmp ecx, esi
jg 0x526d04
inc esi
jmp 0x526d07
lea esi, [ecx + 1]
mov eax, dword [ebp - 0x2f8]
mov dword [ebp - 0x31c], esi
test al, al
jne 0x526d4c
cmp esi, 2
jne 0x526d4c
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [eax + 0x4c]
cvttss2si eax, dword [ecx + 0x28]
cmp dword [ebp - 0x318], eax
je 0x526d3b
cvttss2si eax, dword [ecx + 0x2c]
cmp edx, eax
jne 0x526d46
mov esi, 1
mov dword [ebp - 0x31c], esi
mov eax, dword [ebp - 0x2f8]
mov ecx, dword [ebp - 0x2fc]
test ecx, ecx
je 0x526d7a
cmp dword [ecx + 0x218], 0x38
jne 0x526d7a
cmp word [ecx + 0x172], 0
jne 0x526d7a
sub esi, 0xc
mov ecx, 0
cmovs esi, ecx
mov dword [ebp - 0x31c], esi
test al, al
je 0x526dec
cmp al, 0x23
je 0x526dec
cmp al, 0x10
je 0x526dec
cmp al, 7
je 0x526dec
cmp al, 0x11
je 0x526dec
cmp al, 0x17
je 0x526dec
cmp al, 0x27
je 0x526dec
cmp al, 0x33
je 0x526dec
cmp al, 0x37
je 0x526dec
cmp al, 0x4f
je 0x526dec
cmp al, 0x61
je 0x526dec
mov edx, dword [ebp - 0x2f4]
mov eax, dword [edx + 0x4c]
cvttss2si ecx, dword [eax + 0x28]
cvttss2si esi, dword [eax + 0x2c]
mov eax, dword [edx + 0x1a9c2c]
mov dword [ebp - 0x318], ecx
mov dword [ebp - 0x30c], esi
test eax, eax
je 0x526fbd
mov esi, dword [edx + 0x1a9c30]
mov ecx, eax
mov dword [ebp - 0x318], ecx
mov dword [ebp - 0x30c], esi
jmp 0x526fbd
mov ecx, dword [ebp - 0x338]
mov eax, dword [ebp - 0x328]
mov ecx, dword [ecx + 0x62e8f0]
add eax, ecx
cmp esi, eax
jle 0x526e0d
cmp ecx, 0xffffffff
jne 0x5275eb
mov eax, dword [ebp - 0x2f8]
cmp al, 0x61
jne 0x526ebe
cmp esi, 4
jl 0x525899
mov ecx, dword [0x9c25ac]
push dword [ebp - 0x334]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
mov edx, dword [ebp - 0x30c]
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x2f4]
mov esi, dword [eax + 0x4c]
cvttss2si ecx, dword [esi + 0x2c]
sub edx, ecx
cvttss2si ecx, dword [esi + 0x28]
movd xmm1, edx
mov edx, dword [ebp - 0x318]
sub edx, ecx
cvtdq2ps xmm1, xmm1
movd xmm0, edx
cvtdq2ps xmm0, xmm0
call fcn.0045e630
movaps xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x526e86
addss xmm1, dword [0x605088]
mov eax, dword [ebp - 0x300]
movss xmm3, dword [0x604e1c]
movss xmm2, dword [eax + 0x34]
movaps xmm0, xmm2
subss xmm0, xmm3
comiss xmm0, xmm1
ja 0x525899
addss xmm2, xmm3
comiss xmm1, xmm2
ja 0x525899
mov esi, dword [ebp - 0x31c]
jmp 0x526ef2
cmp al, 0x23
jne 0x526ef2
mov ecx, dword [ebp - 0x2fc]
cmp dword [ecx + 0x20], 0x3e8
jb 0x526eda
cmp byte [ecx + 0x214], 0
je 0x526ef2
cmp dword [0x62f648], 1
jne 0x526ef2
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x525899
mov eax, dword [ebp - 0x338]
cmp dword [eax + 0x62e8f0], 0xffffffff
jne 0x526f22
mov ecx, dword [0x9c25ac]
mov dl, 0x1b
lea ecx, [ecx + 0x8d0]
call fcn.00498640
add eax, dword [ebp - 0x328]
cmp esi, eax
jg 0x525899
mov eax, dword [ebp - 0x2f4]
mov esi, dword [ebp - 0x30c]
mov dword [ebp - 0x31c], esi
mov eax, dword [eax + 0x4c]
cvttss2si ecx, dword [eax + 0x28]
cvttss2si edx, dword [eax + 0x2c]
mov eax, dword [ebp - 0x318]
mov dword [ebp - 0x310], eax
mov eax, dword [ebp - 0x2f4]
push ecx
add eax, 0x118
push eax
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0x310]
push eax
call fcn.00498290
mov eax, dword [ebp - 0x2fc]
add esp, 0x10
test eax, eax
je 0x526f97
cmp dword [eax + 0x218], 0x38
jne 0x526f97
cmp word [eax + 0x172], 0
jne 0x526f97
mov eax, dword [ebp - 0x318]
mov ecx, esi
jmp 0x526fa3
mov eax, dword [ebp - 0x310]
mov ecx, dword [ebp - 0x31c]
cmp eax, dword [ebp - 0x318]
jne 0x525899
cmp ecx, esi
jne 0x525899
mov ecx, dword [ebp - 0x318]
mov eax, dword [ebp - 0x324]
mov edx, ecx
sub edx, dword [ebp - 0x324]
sub eax, ecx
cmp ecx, dword [ebp - 0x324]
mov ecx, esi
cmovle edx, eax
mov eax, dword [ebp - 0x304]
sub ecx, dword [ebp - 0x304]
sub eax, esi
cmp esi, dword [ebp - 0x304]
cmovle ecx, eax
cmp edx, 7
jg 0x527011
cmp ecx, 7
jg 0x527011
lea eax, [edx + ecx*8]
mov esi, dword [eax*4 + 0x5ec9c8]
mov dword [ebp - 0x310], esi
mov esi, dword [ebp - 0x30c]
jmp 0x52702f
cmp edx, ecx
jg 0x527026
lea esi, [ecx + 1]
mov dword [ebp - 0x310], esi
mov esi, dword [ebp - 0x30c]
jmp 0x52702f
lea eax, [edx + 1]
mov dword [ebp - 0x310], eax
mov eax, dword [ebp - 0x324]
mov edx, esi
mov dword [ebp - 0x308], eax
mov eax, dword [ebp - 0x304]
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x2f4]
push ecx
mov ecx, dword [ebp - 0x318]
add eax, 0x118
push eax
lea eax, [ebp - 0x300]
push eax
lea eax, [ebp - 0x308]
push eax
call fcn.00498030
mov eax, dword [ebp - 0x48]
add esp, 0x10
mov dword [ebp - 0x31c], 0xffffffff
mov eax, dword [eax + 0x62e8e4]
sub eax, 3
je 0x5270ac
sub eax, 1
je 0x5270a0
sub eax, 2
jne 0x5270b6
mov dword [ebp - 0x31c], 3
jmp 0x5270b6
mov dword [ebp - 0x31c], 2
jmp 0x5270b6
mov dword [ebp - 0x31c], 1
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
jne 0x527393
mov esi, dword [ebp - 0x338]
cmp dword [esi + 0x62e928], eax
jne 0x527393
mov ecx, dword [ebp - 0x2f4]
mov esi, dword [ecx + 0x4c]
test esi, esi
je 0x527393
cmp dword [edi + 0x20], 0x3e8
mov edx, dword [0x1ff59f0]
mov eax, dword [0x9c2598]
jae 0x5271c8
test eax, eax
jne 0x5271c8
mov eax, dword [0x9c25ac]
mov ax, word [eax + 0x10fc]
cmp ax, word [edi + 0x878]
je 0x52713e
test edx, edx
je 0x5272df
mov al, byte [esi + 0xa5a]
test al, al
je 0x52713e
cmp byte [edi + 0xa5a], al
je 0x5272df
mov esi, dword [0x9c2598]
cmp byte [edi + 0x215], 1
jne 0x5272a3
mov eax, dword [0x9c25ac]
movzx ecx, word [edi + 0x878]
cmp word [eax + 0x10fc], cx
je 0x527252
test cx, cx
mov ecx, dword [ebp - 0x2f4]
je 0x52724a
test edx, edx
je 0x5272df
mov eax, dword [ecx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x52724a
cmp byte [edi + 0xa5a], al
jne 0x52724a
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
je 0x5272d9
mov esi, dword [0x9c2598]
mov edx, dword [0x1ff59f0]
test esi, esi
je 0x527258
jmp 0x5272a3
cmp eax, 1
jne 0x52723b
mov edx, dword [0x1ff59f0]
test edx, edx
jle 0x52729d
mov cl, byte [esi + 0xa5a]
test cl, cl
jle 0x52729d
mov eax, dword [ebp - 0x2fc]
test eax, eax
je 0x52729d
mov al, byte [eax + 0xa5a]
test al, al
jle 0x52729d
cmp cl, al
jne 0x52729d
cvttss2si eax, dword [esi + 0x28]
sar eax, 7
cmp eax, 8
je 0x52721f
cmp eax, 9
jne 0x52729d
cvttss2si eax, dword [esi + 0x2c]
sar eax, 7
cmp eax, 0xf
je 0x525899
cmp eax, 0x10
je 0x525899
jmp 0x52729d
mov esi, dword [0x9c2598]
test esi, esi
jne 0x5272a3
jmp 0x527144
mov esi, dword [0x9c2598]
jmp 0x52725e
mov esi, dword [0x9c2598]
mov ecx, dword [ebp - 0x2f4]
cmp byte [edi + 0x215], 1
jne 0x5272a3
cmp word [edi + 0x878], 0
jne 0x5272a3
test edx, edx
je 0x5272df
mov eax, dword [ecx + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x5272a3
cmp byte [edi + 0xa5a], al
jne 0x5272a3
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
je 0x5272d9
mov edx, dword [0x1ff59f0]
mov esi, dword [0x9c2598]
mov eax, dword [ebp - 0x2f4]
mov eax, dword [eax + 0x4c]
mov cl, byte [eax + 0xa5a]
test cl, cl
jle 0x5272f8
mov al, byte [edi + 0xa5a]
test al, al
jle 0x5272f8
cmp cl, al
jne 0x5272f8
test esi, esi
jne 0x527353
test edx, edx
jne 0x5272d9
cmp dword [edi + 0x20], 0x3e8
jb 0x527353
mov ecx, dword [ebp - 0x2f4]
mov edx, dword [ebp - 0x320]
mov eax, 0xc
mov esi, dword [ebp - 0x2fc]
mov edi, dword [edi + eax]
jmp 0x526ac0
test esi, esi
jne 0x527353
test edx, edx
jle 0x527353
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
jne 0x527316
cmp dword [edi + 0x20], 0x3e8
jb 0x5272d9
mov esi, dword [0x9c2598]
mov edx, dword [0x1ff59f0]
test esi, esi
jne 0x527353
test edx, edx
jle 0x527353
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx + 0x4c]
cmp byte [eax + 0xa5a], 3
jne 0x527353
cmp dword [edi + 0x20], 0x3e8
jb 0x5272df
mov al, byte [edi + 0xa5a]
test al, al
jle 0x527353
cmp al, 4
jne 0x5272df
cmp byte [edi + 0x214], 0
jne 0x5272d9
test esi, esi
jne 0x527393
cmp dword [edi + 0x20], 0x3e8
jae 0x52739c
cmp byte [edi + 0xa5a], 0
jne 0x5273cd
mov eax, dword [0x9c25ac]
mov ax, word [eax + 0x10fc]
cmp ax, word [edi + 0x878]
je 0x5273cd
test edx, edx
je 0x5272d9
cmp dword [edi + 0x20], 0x3e8
jb 0x5273cd
cmp byte [edi + 0x214], 0
jne 0x5273cd
cmp byte [edi + 0x215], 0
jne 0x5273cd
mov ecx, edi
call fcn.00573860
test eax, eax
je 0x5273cd
mov edi, dword [edi + 0xc]
mov edx, dword [ebp - 0x320]
mov esi, dword [ebp - 0x2fc]
jmp 0x526ab3
cmp byte [edi + 0x211], 1
jne 0x5273ea
mov edi, dword [edi + 0xc]
mov edx, dword [ebp - 0x320]
mov esi, dword [ebp - 0x2fc]
jmp 0x526ab3
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
jne 0x52742e
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [eax + 0x4c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
mov esi, dword [ebp - 0x338]
test eax, eax
jne 0x527434
cmp dword [esi + 0x62e928], eax
jne 0x527434
mov edi, dword [edi + 0xc]
mov edx, dword [ebp - 0x320]
mov esi, dword [ebp - 0x2fc]
jmp 0x526ab3
mov esi, dword [ebp - 0x338]
mov eax, dword [ebp - 0x310]
mov ecx, dword [ebp - 0x2f4]
cmp eax, dword [ebp - 0x31c]
jg 0x5275a1
mov eax, dword [ebp - 0x324]
cmp dword [ebp - 0x308], eax
jne 0x5275a1
mov eax, dword [ebp - 0x304]
cmp dword [ebp - 0x300], eax
jne 0x5275a1
cmp edi, dword [ecx + 0x4c]
je 0x5275a1
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x50]
call eax
test eax, eax
je 0x527493
cmp dword [esi + 0x62e928], 0
jne 0x52759b
mov eax, dword [edi + 0x20]
cmp eax, 0x3e8
jb 0x5274b6
cmp byte [edi + 0x214], 0
jne 0x5274bf
cmp byte [edi + 0x215], 0
je 0x5274d0
cmp eax, 0x3e8
jae 0x5274bf
cmp dword [esi + 0x62e928], 0
je 0x5274d0
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x52759b
cmp dword [esi + 0x62e8f0], 0xffffffff
mov edx, dword [ebp - 0x314]
jne 0x527511
test edx, edx
jne 0x527511
movzx eax, word [edi + 0x20]
mov edx, 1
mov word [ebp - 0x2b4], ax
movzx eax, word [0x8fc8b8]
mov dword [ebp - 0x2b0], 0xfffffffe
mov word [ebp - 0x2b8], ax
mov dword [ebp - 0x314], edx
movzx eax, word [edi + 0x20]
mov esi, eax
mov word [ebp + edx*8 - 0x2b4], ax
mov eax, dword [ebp - 0x2fc]
mov dword [ebp + edx*8 - 0x2b0], 0xffffffff
test eax, eax
je 0x52758c
cmp eax, edi
jne 0x52758c
test edx, edx
je 0x52758c
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 0x62e8e4]
cmp eax, 3
je 0x527554
cmp eax, 4
je 0x527554
cmp eax, 6
jne 0x52758c
movzx edx, word [ebp - 0x2b4]
mov ecx, dword [ebp - 0x2b0]
mov word [ebp - 0x2b4], si
mov esi, dword [ebp - 0x314]
mov eax, dword [ebp + esi*8 - 0x2b0]
mov dword [ebp - 0x2b0], eax
mov word [ebp + esi*8 - 0x2b4], dx
mov edx, esi
mov dword [ebp + edx*8 - 0x2b0], ecx
mov ecx, dword [ebp - 0x2f4]
inc edx
mov dword [ebp - 0x314], edx
jmp 0x5275a7
mov ecx, dword [ebp - 0x2f4]
mov edx, dword [ebp - 0x314]
mov eax, dword [ebp - 0x48]
mov edi, dword [edi + 0xc]
cmp dword [eax + 0x62e8e4], 3
jne 0x5275bf
cmp edx, 7
jg 0x5278ed
mov eax, dword [ebp - 0x338]
cmp dword [eax + 0x62e92c], edx
jle 0x5278ed
cmp edx, 0xd
jge 0x5278ed
mov edx, dword [ebp - 0x320]
mov esi, dword [ebp - 0x2fc]
jmp 0x526ac0
mov eax, dword [ebp - 0x2f8]
cmp al, 0x23
je case.0x525865.83
cmp al, 0x27
je case.0x525865.83
cmp al, 0x61
je case.0x525865.83
mov eax, dword [ebp - 0x318]
mov edi, 1
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x2f4]
push ecx
mov dword [ebp - 0x308], edx
mov esi, dword [eax + 0x4c]
add eax, 0x118
push eax
lea eax, [ebp - 0x308]
push eax
cvttss2si edx, dword [esi + 0x2c]
lea eax, [ebp - 0x300]
push eax
cvttss2si ecx, dword [esi + 0x28]
call fcn.00498290
mov eax, dword [ebp - 0x318]
add esp, 0x10
cmp dword [ebp - 0x300], eax
jne 0x52766c
mov eax, dword [ebp - 0x30c]
cmp dword [ebp - 0x308], eax
je 0x52766e
xor edi, edi
cmp dword [ebx + 0x20], 1
jne case.0x525865.83
cmp edi, 1
jne case.0x525865.83
mov eax, dword [esi + 0x9d8]
cmp eax, 4
jl 0x5276d7
cmp eax, 9
jg 0x5276d7
imul eax, dword [esi + 0x5c], 0xe1
mov ecx, dword [esi + 0x60]
add eax, dword [ecx + 0x2d0]
mov eax, dword [eax*4 + 0x9a1960]
cmp eax, 2
lea edx, [eax - 2]
cmovbe edx, eax
mov eax, dword [0x9c25d8]
cmp dword [eax + 0x1c], 0
je 0x5276d7
mov ecx, dword [ecx + 0x2e4]
mov eax, dword [esi + 0x7f0]
imul ecx, edx
lea eax, [eax + ecx*4]
cmp dword [ebx + 0x1c], eax
jb 0x525899
mov edi, dword [ebp - 0x2f4]
cmp dword [edi + 0x40], 0
je case.0x525865.83
movss xmm0, dword [0x60541c]
comiss xmm0, dword [ebx + 0x14]
jbe 0x527713
mov eax, dword [ebp - 0x2fc]
test eax, eax
je 0x527713
movss xmm0, dword [eax + 0x28]
movss dword [ebx + 0x10], xmm0
movss xmm0, dword [eax + 0x2c]
movss dword [ebx + 0x18], xmm0
push ecx
mov ecx, esi
call fcn.00572830
mov edx, dword [edi + 0x4c]
cvttss2si eax, dword [ebx + 0x10]
cvttss2si ecx, dword [edx + 0x28]
cmp eax, ecx
jne 0x52773e
cvttss2si ecx, dword [edx + 0x2c]
cvttss2si eax, dword [ebx + 0x18]
cmp eax, ecx
je 0x525899
mov eax, dword [ebp - 0x2fc]
mov dword [edi + 0x26f28], 0
mov dword [edx + 0xa04], eax
mov eax, dword [ebx + 0x1c]
mov dword [edi + 0x27768], eax
mov eax, dword [edi + 0x4c]
cmp byte [eax + 0xa2c], 0
jne case.0x525865.83
mov esi, dword [edi + 0x1a9c2c]
cvttss2si ecx, dword [eax + 0x28]
cvttss2si edx, dword [eax + 0x2c]
test esi, esi
je 0x527787
mov edx, dword [edi + 0x1a9c30]
cmove esi, ecx
mov ecx, dword [ebp - 0x2fc]
test ecx, ecx
je case.0x525865.83
cvttss2si edi, dword [ecx + 0x2c]
cvttss2si eax, dword [ecx + 0x28]
push edi
mov ecx, esi
mov dword [ebp - 0x300], edi
push eax
mov dword [ebp - 0x304], eax
call fcn.0049a800
mov ecx, eax
mov dword [ebp - 0x308], 0
xor eax, eax
add esp, 8
cmp esi, dword [ebp - 0x304]
setle al
lea eax, [eax*2 - 1]
mov dword [ebp - 0x33c], eax
xor eax, eax
cmp edx, edi
setle al
lea eax, [eax*2 - 1]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + 0x62e8f0]
add eax, dword [ebp - 0x328]
mov dword [ebp - 0x324], eax
cmp ecx, eax
jle 0x5278d6
mov eax, edx
sub eax, edi
sub edi, edx
mov dword [ebp - 0x310], eax
mov eax, esi
sub eax, dword [ebp - 0x304]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x304]
sub eax, esi
xor ecx, ecx
mov dword [ebp - 0x334], eax
nop
cmp ecx, 0x1f4
jg 0x525899
cmp esi, dword [ebp - 0x304]
je 0x527867
mov ecx, dword [ebp - 0x33c]
sub eax, ecx
add esi, ecx
mov dword [ebp - 0x334], eax
add dword [ebp - 0x48], ecx
cmp edx, dword [ebp - 0x300]
je 0x52787c
mov ecx, dword [ebp - 0x4c]
add edx, ecx
sub edi, ecx
add dword [ebp - 0x310], ecx
cmp esi, dword [ebp - 0x304]
mov ecx, dword [ebp - 0x48]
cmovle ecx, eax
cmp edx, dword [ebp - 0x300]
mov eax, dword [ebp - 0x310]
cmovle eax, edi
cmp ecx, 7
jg 0x5278ad
cmp eax, 7
jg 0x5278ad
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0x5ec9c8]
jmp 0x5278b7
cmp ecx, eax
jg 0x5278b4
inc eax
jmp 0x5278b7
lea eax, [ecx + 1]
mov ecx, dword [ebp - 0x308]
inc ecx
cmp eax, dword [ebp - 0x324]
mov eax, dword [ebp - 0x334]
mov dword [ebp - 0x308], ecx
jg 0x527840
mov eax, dword [ebp - 0x2f4]
mov dword [eax + 0x27850], esi
mov dword [eax + 0x27854], edx
jmp case.0x525865.83
mov eax, dword [ebp - 0x318]
mov word [ebp - 0x2c6], ax
mov eax, dword [ebp - 0x30c]
mov word [ebp - 0x2cc], ax
mov esi, dword [ebp - 0x2f4]
mov edx, dword [ebp - 0x2f8]
cmp dl, 0x62
jne 0x527b9d
cvttss2si eax, dword [ebx + 0x18]
cvttss2si ecx, dword [ebx + 0x10]
mov dword [ebp - 0x304], eax
mov eax, dword [esi + 0x4c]
cvttss2si esi, dword [eax + 0x2c]
mov dword [ebp - 0x300], ecx
cvttss2si edx, dword [eax + 0x28]
mov eax, dword [ebp - 0x2f4]
mov dword [ebp - 0x310], esi
mov edi, dword [eax + 0x1a9c2c]
test edi, edi
je 0x527961
mov esi, dword [eax + 0x1a9c30]
mov dword [ebp - 0x310], esi
cmove edi, edx
mov eax, ecx
sub eax, edi
mov edx, edi
sub edx, ecx
cmp edi, ecx
mov ecx, esi
cmovle edx, eax
mov eax, dword [ebp - 0x304]
sub ecx, dword [ebp - 0x304]
sub eax, esi
cmp esi, dword [ebp - 0x304]
cmovle ecx, eax
cmp edx, 7
jg 0x5279a0
cmp ecx, 7
jg 0x5279a0
lea eax, [edx + ecx*8]
mov eax, dword [eax*4 + 0x5ec9c8]
jmp 0x5279aa
lea eax, [ecx + 1]
cmp edx, ecx
jle 0x5279aa
lea eax, [edx + 1]
mov ecx, dword [ebp - 0x328]
mov esi, dword [0x630db0]
mov edx, dword [ebp - 0x310]
add esi, ecx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x300]
mov dword [ebp - 0x308], eax
mov eax, dword [ebp - 0x304]
mov dword [ebp - 0x334], eax
mov eax, dword [ebp - 0x2f4]
push ecx
add eax, 0x118
mov ecx, edi
push eax
lea eax, [ebp - 0x334]
push eax
lea eax, [ebp - 0x308]
push eax
call fcn.00498290
mov ecx, dword [ebp - 0x32c]
add esp, 0x10
cmp esi, 0xffffffff
mov dl, 0x15
cmove esi, dword [ebp - 0x330]
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
cmp eax, 0x64
jge 0x527a4c
mov ecx, dword [ebp - 0x32c]
mov dl, 0x1b
call fcn.00498640
add eax, dword [ebp - 0x328]
cmp eax, esi
jle 0x527a4c
mov ecx, dword [ebp - 0x32c]
mov dl, 0x1b
call fcn.00498640
mov esi, eax
add esi, dword [ebp - 0x328]
cmp dword [ebp - 0x48], esi
jg 0x525899
mov eax, dword [ebp - 0x300]
cmp dword [ebp - 0x308], eax
jne 0x525899
mov eax, dword [ebp - 0x304]
cmp dword [ebp - 0x334], eax
jne 0x525899
movss xmm1, dword [ebx + 0x10]
mov esi, edi
movss xmm0, dword [ebx + 0x18]
cvttss2si ecx, xmm1
cvttss2si edx, xmm0
sub esi, ecx
mov eax, ecx
sub eax, edi
cmp edi, ecx
mov edi, dword [ebp - 0x310]
mov ecx, edi
cmovle esi, eax
mov eax, edx
sub ecx, edx
sub eax, edi
cmp edi, edx
cmovle ecx, eax
cmp esi, 7
jg 0x527ac1
cmp ecx, 7
jg 0x527ac1
lea eax, [esi + ecx*8]
mov ecx, dword [eax*4 + 0x5ec9c8]
jmp 0x527acb
cmp esi, ecx
jg 0x527ac8
inc ecx
jmp 0x527acb
lea ecx, [esi + 1]
mov eax, dword [0x630db0]
add eax, dword [ebp - 0x328]
cmp ecx, eax
jg 0x525899
mov esi, dword [ebp - 0x2f4]
mov eax, dword [esi + 0x4c]
mov ax, word [eax + 0x20]
mov word [ebp - 0x2b4], ax
cvttss2si eax, xmm1
mov dword [ebp - 0x2b0], 0xffffffff
movzx edx, ax
cvttss2si eax, xmm0
mov word [ebp - 0x2c6], dx
movzx eax, ax
mov ecx, eax
mov word [ebp - 0x2cc], ax
shr ecx, 2
mov eax, edx
shr eax, 2
shl ecx, 0xa
movsx eax, byte [ecx + eax + 0x6345f0]
and al, 0x41
cmp al, 1
je 0x525899
mov edx, dword [ebp - 0x2f8]
cmp word [ebp - 0x2b4], 0
ja 0x527b5a
cmp dl, 0x61
je 0x527b5a
cmp dl, 0x23
je 0x527b5a
cmp dl, 0x33
jne 0x527cd0
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
mov ecx, dword [eax + 0x62e92c]
mov eax, ecx
cmp eax, 0xd
jge 0x527b87
xor edx, edx
mov word [ebp + eax*8 - 0x2b4], dx
mov dword [ebp + eax*8 - 0x2b0], edx
inc eax
cmp eax, 0xd
jl 0x527b70
cmp ecx, 1
jne 0x527c13
mov eax, 0x39d
lea edi, [ecx + 0x47]
jmp 0x527c25
cmp dl, 0x66
jne 0x527b3d
mov eax, dword [0x9c25ac]
mov eax, dword [eax + 0xbec]
test al, al
js 0x527b3d
test eax, 0x808000
jne 0x527b3d
mov esi, dword [esi + 0x108]
mov ecx, dword [0x9c25b4]
mov dword [esi + 0x1f8], 0x3e8
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov ecx, dword [esi + 0x1e4]
mov dword [esi + 0x1f4], eax
push 0
push 0x7e4a30
mov eax, dword [ecx]
call dword [eax + 0x80]
mov eax, dword [ebp - 0x2f4]
push 1
push 1
mov ecx, dword [eax + 0x108]
mov eax, dword [ecx]
call dword [eax + 0x88]
mov eax, dword [ebp - 0x330]
jmp 0x525db5
mov edi, 0xa8
cmp ecx, 2
jne 0x527c2c
mov eax, 0x39e
lea edi, [ecx + 0x4e]
mov word [ebp - 0x2ec], ax
push 0xa8
lea eax, [ebp - 0x1a0]
push 0
push eax
call fcn.00468b40
add esp, 0xc
lea eax, [ebp - 0x2f0]
push edi
push eax
lea eax, [ebp - 0x1a0]
push eax
call fcn.004684b0
mov ax, word [esi + 0x20]
add esp, 0xc
cmp dword [ebp - 0x328], 0
mov word [ebp - 0x19a], ax
mov byte [ebp - 0x171], 1
je 0x527c81
mov eax, dword [ebp - 0x330]
mov word [ebp - 0x180], ax
mov eax, dword [esi]
mov ecx, dword [ebp - 0x2f4]
mov esi, dword [eax + 4]
lea eax, [ebp - 0x1a0]
push eax
movzx eax, word [ebp - 0x2ec]
push eax
call esi
mov edx, edi
lea ecx, [ebp - 0x2f0]
call fcn.0054f850
mov esi, dword [ebp - 0x2f4]
mov ecx, esi
call fcn.0051d990
mov edx, dword [ebp - 0x2f8]
mov ecx, dword [ebx + 0x1c]
movzx eax, dl
mov dword [esi + 0x276b4], ecx
mov dword [esi + eax*4 + 0x1aa454], ecx
cmp dl, 0x55
jne 0x525899
mov edi, dword [ebp - 0x2fc]
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e8e4], 2
jne 0x527d08
test edi, edi
jne 0x527d10
mov edi, dword [esi + 0x4c]
mov dword [ebp - 0x2fc], edi
mov dword [edi + 0x204], 1
test edi, edi
je 0x528d9c
cmp dword [edi + 0x204], 1
je 0x527d23
cmp dword [ebp - 0x4c], 0
je 0x528d9c
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax + 0x9d8]
cmp ecx, 2
je 0x528d9c
cmp ecx, 3
je 0x528d9c
cmp byte [eax + 0xa3d], 1
jne 0x527d59
mov ecx, 0x3e8
cmp word [eax + 0x614], cx
jl 0x525899
movsx eax, word [eax + 0x614]
cmp dl, 0x60
jae 0x527d94
mov edi, dword [0x9c25ac]
movzx eax, byte [edi + 0x8e4]
lea ecx, [eax + eax*2]
movzx eax, dl
shl ecx, 3
sub eax, ecx
cdq
and edx, 7
add eax, edx
mov edx, dword [ebp - 0x2f8]
sar eax, 3
movzx eax, word [edi + eax*2 + 0x956]
movzx ecx, dl
mov edi, dword [0x9c25ac]
cdq
sub eax, edx
lea esi, [ecx + ecx*2]
mov ecx, eax
shl esi, 5
mov eax, 0x51eb851f
sar ecx, 1
add ecx, 0x64
imul ecx, dword [esi + 0x62e8e8]
imul ecx
movzx ecx, byte [edi + 0xbfb]
mov eax, 0x51eb851f
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov edx, 0x64
sub edx, ecx
imul esi, edx
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, dword [edi + 0x948]
jle 0x527ea7
push 0xe6c
call fcn.0046677d
mov esi, eax
add esp, 4
mov dword [ebp - 0x33c], esi
mov dword [ebp - 4], 2
push 0xe6c
push 0
push esi
call fcn.00468b40
add esp, 0xc
xorps xmm3, xmm3
push 0
push ecx
push 0x77777777
sub esp, 0x10
mov ecx, esi
mov dword [esp + 8], 0x41800000
mov dword [esp + 4], 0x43960000
mov dword [esp], 0
push 0xffffaaaa
push 0x7da6b0
call fcn.004c9d30
mov dword [ebp - 4], 0xffffffff
test eax, eax
je 0x527e72
push eax
mov eax, dword [ebp - 0x2f4]
mov ecx, dword [eax + 0x27df4]
call fcn.004c82d0
mov ecx, dword [0x9c25cc]
test ecx, ecx
je 0x525899
push 0x21
call fcn.004a8da0
test eax, eax
je 0x525899
sub esp, 0xc
push 0
push ecx
mov ecx, eax
call fcn.004a86c0
mov eax, dword [ebp - 0x330]
jmp 0x525db5
mov esi, dword [ebp - 0x2fc]
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call eax
mov edi, dword [ebp - 0x2f4]
cmp eax, 1
jne 0x527ed3
mov ecx, dword [edi + 0x4c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x525899
mov ecx, dword [edi + 0x4c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x50]
call eax
cmp eax, 1
je 0x527ef0
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x50]
call eax
cmp eax, 1
jne 0x527f0e
mov ecx, dword [ebp - 0x2f8]
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
je 0x525899
jmp 0x527f14
mov ecx, dword [ebp - 0x2f8]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x527f22
cmp eax, 0x3e8
jb 0x527f2b
cmp byte [esi + 0x214], 1
jne 0x527f4e
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x527f4e
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x525899
mov eax, dword [esi + 0x20]
test eax, eax
je 0x527f5c
cmp eax, 0x3e8
jb 0x527f65
cmp byte [esi + 0x214], 1
jne 0x527f8f
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x527f8f
mov ecx, dword [edi + 0x4c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x525899
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
jne 0x527fc7
mov ecx, dword [edi + 0x4c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
test eax, eax
jne 0x527fc7
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 0
je 0x525899
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
test eax, eax
jne 0x528006
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x528006
cmp byte [esi + 0x215], 1
je 0x525899
cmp byte [esi + 0x214], 1
je 0x525899
mov edx, dword [0x9c2598]
test edx, edx
jne 0x528152
cmp byte [esi + 0x215], 1
jne 0x528085
mov eax, dword [0x9c25ac]
movzx ecx, word [esi + 0x878]
cmp word [eax + 0x10fc], cx
je 0x52807f
test cx, cx
je 0x52807f
cmp dword [0x1ff59f0], edx
je 0x525899
mov eax, dword [edi + 0x4c]
mov esi, dword [ebp - 0x2fc]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x528085
cmp al, byte [esi + 0xa5a]
jne 0x528085
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
je 0x525899
mov edx, dword [0x9c2598]
test edx, edx
jne 0x528152
jmp 0x528085
mov esi, dword [ebp - 0x2fc]
movzx eax, word [esi + 0x878]
mov ecx, eax
test ax, ax
je 0x528105
mov eax, dword [0x9c25ac]
cmp word [eax + 0x10fc], cx
mov ecx, dword [ebp - 0x2f8]
je 0x52810b
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x52810b
mov eax, dword [esi + 0x20]
test eax, eax
je 0x52810b
cmp eax, 0x3e8
jae 0x52810b
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
cmp eax, 1
jne 0x5280fb
cmp dword [0x1ff59f0], 0
je 0x525899
mov eax, dword [edi + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x5280fb
cmp al, byte [esi + 0xa5a]
je 0x525899
mov edx, dword [0x9c2598]
test edx, edx
jne 0x528152
mov ecx, dword [ebp - 0x2f8]
cmp dword [0x1ff59f0], 0
jle 0x528152
mov eax, dword [edi + 0x4c]
cmp byte [eax + 0xa5a], 3
jne 0x528152
mov eax, dword [esi + 0x20]
test eax, eax
je 0x52812e
cmp eax, 0x3e8
jb 0x52813c
mov al, byte [esi + 0xa5a]
test al, al
jle 0x528152
cmp al, 4
je 0x528152
movzx eax, cl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
je 0x525899
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
mov esi, dword [eax + 0x62e928]
mov eax, dword [ebp - 0x2fc]
test esi, esi
jne 0x528190
cmp dword [eax + 0x20], 0x3e8
jb 0x528190
cmp byte [eax + 0x214], 0
jne 0x528190
cmp byte [eax + 0x215], 0
je 0x525899
movzx eax, word [eax + 0x878]
mov ecx, eax
test ax, ax
je 0x5281c5
cmp esi, 1
jne 0x5281c5
mov eax, dword [edi + 0x4c]
cmp word [eax + 0x878], cx
je 0x525899
mov eax, dword [0x9c25ac]
cmp word [eax + 0x10fe], cx
je 0x525899
test edx, edx
mov edx, dword [ebp - 0x2fc]
jne 0x528203
cmp byte [edx + 0x215], 1
jne 0x528203
test cx, cx
jne 0x528203
cmp dword [0x1ff59f0], 0
je 0x525899
mov eax, dword [edi + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x528203
cmp al, byte [edx + 0xa5a]
je 0x525899
cmp dword [edx + 0x20], 0x3e8
jb 0x528233
cmp byte [edx + 0x214], 0
jne 0x528233
cmp byte [edx + 0x215], 0
jne 0x528233
mov ecx, edx
call fcn.00573860
test eax, eax
jne 0x5259bc
mov edx, dword [ebp - 0x2fc]
cmp byte [edx + 0x9bc], 0
jne 0x5259bc
mov eax, dword [edi + 0x276b4]
add eax, 0x3e8
cmp dword [ebx + 0x1c], eax
jbe 0x5259bc
mov al, byte [edx + 0x620]
and al, 0xf
cmp al, 0xf
jne 0x52828c
cmp esi, 1
jne 0x52828c
mov eax, dword [edi + 0x4c]
mov al, byte [eax + 0xa5a]
test al, al
je 0x525899
mov cl, byte [edx + 0xa5a]
test cl, cl
jle 0x52828c
test al, al
jle 0x52828c
cmp cl, al
je 0x525899
mov eax, dword [ebp - 0x2f4]
cvttss2si esi, dword [edx + 0x28]
mov eax, dword [eax + 0x4c]
cvttss2si ecx, dword [eax + 0x28]
mov dword [ebp - 0x4c], esi
cvttss2si eax, dword [eax + 0x2c]
cvttss2si edi, dword [edx + 0x2c]
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x2f4]
mov edx, dword [eax + 0x1a9c2c]
mov dword [ebp - 0x304], edi
test edx, edx
je 0x5282d4
mov eax, dword [eax + 0x1a9c30]
mov dword [ebp - 0x300], eax
cmove edx, ecx
mov eax, esi
sub eax, edx
mov dword [ebp - 0x33c], edx
mov ecx, edx
sub ecx, esi
cmp edx, esi
mov edx, dword [ebp - 0x300]
mov esi, edx
cmovle ecx, eax
mov eax, edi
sub eax, edx
sub esi, edi
cmp edx, edi
cmovle esi, eax
cmp ecx, 7
jg 0x528313
cmp esi, 7
jg 0x528313
lea eax, [ecx + esi*8]
mov esi, dword [eax*4 + 0x5ec9c8]
jmp 0x52831d
cmp ecx, esi
jg 0x52831a
inc esi
jmp 0x52831d
lea esi, [ecx + 1]
mov eax, dword [ebp - 0x2f8]
movzx eax, al
push ecx
mov ecx, dword [ebp - 0x33c]
lea eax, [eax + eax*2]
shl eax, 5
mov edi, dword [eax + 0x62e8f0]
mov eax, dword [ebp - 0x4c]
add edi, dword [ebp - 0x328]
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x304]
mov dword [ebp - 0x308], eax
mov eax, dword [ebp - 0x2f4]
add eax, 0x118
push eax
lea eax, [ebp - 0x308]
push eax
lea eax, [ebp - 0x300]
push eax
call fcn.00498290
mov edx, dword [ebp - 0x2fc]
add esp, 0x10
cmp edi, 0xffffffff
cmove edi, dword [ebp - 0x330]
cmp dword [edx + 0x218], 0x38
jne 0x5283bb
cmp word [edx + 0x172], 0
jne 0x5283bb
cvttss2si ecx, dword [edx + 0x28]
sub esi, 0xc
mov eax, esi
mov esi, 0
cmovns esi, eax
mov dword [ebp - 0x48], ecx
cvttss2si ecx, dword [edx + 0x2c]
mov dword [ebp - 0x324], ecx
jmp 0x5283d0
mov eax, dword [ebp - 0x300]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x308]
mov dword [ebp - 0x324], eax
mov ecx, dword [ebp - 0x32c]
mov dl, 0x15
lea ecx, [ecx + 0xbc]
call fcn.0049aed0
cmp eax, 0x64
jge 0x528414
mov ecx, dword [ebp - 0x32c]
mov dl, 0x1b
call fcn.00498640
add eax, dword [ebp - 0x328]
cmp eax, edi
jle 0x528414
mov ecx, dword [ebp - 0x32c]
mov dl, 0x1b
call fcn.00498640
mov edi, eax
add edi, dword [ebp - 0x328]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x304]
mov edx, dword [ebp - 0x324]
cmp esi, edi
jg 0x528ad2
cmp dword [ebp - 0x48], ecx
jne 0x528ad2
cmp edx, eax
jne 0x528ad2
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e8f0], 0xffffffff
jne 0x528475
mov ecx, dword [0x9c25ac]
mov dl, 0x1b
lea ecx, [ecx + 0x8d0]
call fcn.00498640
add eax, dword [ebp - 0x328]
cmp esi, eax
jg 0x525899
cmp dword [0x9c2598], 0
mov esi, dword [ebp - 0x2f4]
jne 0x528637
mov eax, dword [esi + 0x4c]
cmp byte [eax + 0xa5a], 0
jne 0x5284fb
mov ecx, dword [ebp - 0x2fc]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x5284fb
cmp eax, 0x3e8
jae 0x5284fb
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
mov edi, dword [0x9c25ac]
cmp eax, 1
jne 0x5284ec
mov ecx, dword [ebp - 0x2fc]
mov ax, word [edi + 0x10fc]
cmp ax, word [ecx + 0x878]
je 0x5284ec
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
je 0x525899
cmp dword [0x9c2598], 0
jne 0x52863d
jmp 0x528501
mov edi, dword [0x9c25ac]
mov ecx, dword [0x1ff59f0]
test ecx, ecx
jle 0x52854a
mov eax, dword [esi + 0x4c]
mov dl, byte [eax + 0xa5a]
test dl, dl
jle 0x52854a
mov eax, dword [ebp - 0x2fc]
mov al, byte [eax + 0xa5a]
test al, al
jle 0x52854a
cmp dl, al
mov edx, dword [ebp - 0x2f8]
jne 0x528550
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
je 0x525899
jmp 0x528550
mov edx, dword [ebp - 0x2f8]
mov esi, dword [ebp - 0x2fc]
mov ax, word [edi + 0x10fc]
cmp ax, word [esi + 0x878]
mov esi, dword [ebp - 0x2f4]
je 0x5285b5
mov eax, dword [ebp - 0x2fc]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x5285b5
cmp eax, 0x3e8
jae 0x5285b5
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 0
je 0x5285b5
test ecx, ecx
je 0x525899
mov eax, dword [esi + 0x4c]
mov edx, dword [ebp - 0x2fc]
mov al, byte [eax + 0xa5a]
cmp al, byte [edx + 0xa5a]
je 0x525899
test ecx, ecx
jle 0x52863d
mov edi, dword [ebp - 0x2fc]
mov ecx, edi
mov eax, dword [edi]
mov eax, dword [eax + 0x58]
call eax
test eax, eax
jne 0x528637
mov ecx, dword [esi + 0x4c]
cvttss2si eax, dword [ecx + 0x28]
sar eax, 7
cmp eax, 8
je 0x5285e5
cmp eax, 9
jne 0x5285f7
cvttss2si eax, dword [ecx + 0x2c]
sar eax, 7
cmp eax, 0xf
je 0x5285fb
cmp eax, 0x10
je 0x5285fb
xor ecx, ecx
jmp 0x528600
mov ecx, 1
mov eax, dword [edi + 0x20]
test eax, eax
je 0x52860e
cmp eax, 0x3e8
jb 0x528617
cmp byte [edi + 0x215], 1
jne 0x528637
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
cmp dword [eax + 0x62e928], 1
jne 0x528637
test ecx, ecx
je 0x525899
mov edi, dword [0x9c25ac]
push 0xa8
lea eax, [ebp - 0xf8]
push 0
push eax
call fcn.00468b40
mov ecx, dword [esi + 0x4c]
mov eax, 0x367
mov word [ebp - 0xf4], ax
add esp, 0xc
movzx eax, word [ecx + 0x20]
mov word [ebp - 0xf2], ax
movzx eax, word [ecx + 0x20]
mov word [ebp - 0xd2], ax
movzx eax, word [esi + 0x1a9c2c]
mov word [ebp - 0xd6], ax
movzx eax, word [esi + 0x1a9c30]
mov word [ebp - 0xcc], ax
cvttss2si eax, dword [ecx + 0x28]
mov word [ebp - 0xce], ax
cvttss2si eax, dword [ecx + 0x2c]
mov dword [ebp - 0xc4], 0xffffffff
mov ecx, edi
mov byte [ebp - 0xc7], 0
mov word [ebp - 0xca], 0xff
mov word [ebp - 0xd4], ax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
mov word [ebp - 0xd0], ax
mov eax, dword [ebp - 0x2fc]
movzx edx, word [eax + 0x20]
mov word [ebp - 0xbc], dx
mov eax, dword [edi]
push edx
mov esi, dword [eax + 0x34]
call esi
mov edi, eax
test edi, edi
je 0x525899
mov eax, dword [ebp - 0x2f8]
movzx ecx, al
lea ecx, [ecx + ecx*2]
shl ecx, 5
cmp dword [ecx + 0x62e8f0], 0xffffffff
jne 0x52874e
movzx eax, word [edi + 0x20]
lea ecx, [ebp - 0xb0]
mov word [ebp - 0xbc], ax
lea esi, [ebp - 0xb4]
movzx eax, word [0x8fc8b8]
mov dword [ebp - 0xb8], 0xfffffffe
mov word [ebp - 0xc0], ax
mov dword [ebp - 0x300], 2
jmp 0x528764
mov dword [ebp - 0x300], 1
lea ecx, [ebp - 0xb8]
lea esi, [ebp - 0xbc]
mov ax, word [edi + 0x20]
mov word [esi], ax
mov eax, dword [ebp - 0x2f8]
mov dword [ecx], 0xffffffff
cmp al, 0x10
je 0x528787
cmp al, 0xc
je 0x528787
cmp al, 0x1c
jne 0x52891a
mov eax, dword [ebp - 0x2f4]
cvttss2si edx, dword [edi + 0x28]
mov ecx, dword [eax + 0x4c]
cvttss2si eax, dword [ecx + 0x28]
cvttss2si esi, dword [edi + 0x2c]
sub edx, eax
cvttss2si eax, dword [ecx + 0x2c]
mov ecx, esi
sub ecx, eax
test edx, edx
jle 0x5287b9
mov edx, 1
mov eax, edx
mov esi, eax
jmp 0x5287c8
mov eax, edx
mov esi, edx
test edx, edx
jns 0x5287c8
or edx, 0xffffffff
or eax, edx
or esi, edx
test ecx, ecx
jle 0x5287d3
mov ecx, 1
jmp 0x5287de
mov eax, edx
test ecx, ecx
jns 0x5287de
mov eax, esi
or ecx, 0xffffffff
cvttss2si edx, dword [edi + 0x28]
add edx, eax
cvttss2si eax, dword [edi + 0x2c]
mov dword [ebp - 0x4c], edx
add ecx, eax
mov eax, dword [ebp - 0x2f4]
mov dword [ebp - 0x48], ecx
mov eax, dword [eax + 0x34]
mov esi, dword [eax + 0x10]
cmp dword [esi + 0xc], 0
je 0x52891a
nop dword [eax + eax]
mov eax, dword [ebp - 0x2f4]
cmp esi, dword [eax + 0x4c]
je 0x5288e9
cmp esi, edi
je 0x5288e9
cvttss2si eax, dword [esi + 0x28]
cmp eax, edx
jne 0x5288e9
cvttss2si eax, dword [esi + 0x2c]
cmp eax, ecx
jne 0x5288e9
mov eax, dword [esi + 0x20]
test eax, eax
je 0x528876
cmp eax, 0x3e8
jae 0x528876
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x54]
call eax
test eax, eax
je 0x5288e3
cmp dword [0x9c2598], 0
je 0x5288e3
cmp byte [esi + 0x214], 1
jmp 0x5288e1
cmp dword [0x9c2598], 0
jne 0x5288fd
cmp byte [esi + 0x215], 1
jne 0x5288ad
mov eax, dword [0x9c25ac]
movzx ecx, word [esi + 0x878]
mov edx, ecx
cmp word [eax + 0x10fc], cx
je 0x5288a8
test dx, dx
jne 0x5288c9
test dx, dx
je 0x5288c9
cmp dword [0x9c2598], 0
jne 0x5288fd
cmp byte [esi + 0x215], 1
jne 0x5288fd
cmp word [esi + 0x878], 0
je 0x5288fd
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x58]
call eax
test eax, eax
mov eax, dword [0x1ff59f0]
jne 0x5288df
test eax, eax
jg 0x5288e3
test eax, eax
jne 0x5288fd
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x48]
mov eax, 0xc
mov esi, dword [eax + esi]
cmp dword [esi + 0xc], 0
jne 0x528810
jmp 0x52891a
mov ecx, dword [ebp - 0x300]
mov ax, word [esi + 0x20]
mov word [ebp + ecx*8 - 0xbc], ax
mov dword [ebp + ecx*8 - 0xb8], 0xffffffff
mov ecx, dword [ebp - 0x2fc]
mov edx, dword [ebp - 0x2f8]
cvttss2si eax, dword [ecx + 0x28]
mov word [ebp - 0xce], ax
cvttss2si eax, dword [ecx + 0x2c]
mov word [ebp - 0xd4], ax
test dl, dl
je 0x528972
mov eax, dword [ebp - 0x2f4]
movzx ecx, word [eax + 0x1a9c2c]
movzx eax, word [eax + 0x1a9c30]
mov word [ebp - 0xd6], cx
mov word [ebp - 0xcc], ax
mov word [ebp - 0xce], cx
mov word [ebp - 0xd4], ax
movzx eax, dl
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + 0x62e92c]
cmp eax, 1
jne 0x528997
mov ecx, 0x39d
lea edx, [eax + 0x47]
mov word [ebp - 0xf4], cx
jmp 0x5289b9
mov edx, 0xa8
cmp eax, 2
jne 0x5289b2
mov ecx, 0x39e
lea edx, [eax + 0x4e]
mov word [ebp - 0xf4], cx
jmp 0x5289b9
mov cx, word [ebp - 0xf4]
mov esi, dword [0x1ff25a4]
mov edi, dword [0x1ff2594]
add esi, 0x3e8
mov ax, word [0x904bd8]
cmp esi, edi
jb 0x528a25
mov dword [ebp - 0x300], 0x36c
cmp cx, word [ebp - 0x300]
jne 0x5289f1
cmp ax, word [ebp - 0x300]
je 0x528a3f
cmp esi, edi
jbe 0x528a25
mov esi, 0x367
cmp cx, si
mov esi, 0x39d
lea edi, [esi + 1]
je 0x528a11
cmp cx, si
je 0x528a11
cmp cx, di
jne 0x528a25
mov ecx, 0x367
cmp ax, cx
je 0x528a3f
cmp ax, si
je 0x528a3f
cmp ax, di
je 0x528a3f
push edx
lea eax, [ebp - 0xf8]
push eax
call fcn.005bdb60
mov ax, word [ebp - 0xf4]
mov word [0x904bd8], ax
mov ecx, dword [ebp - 0x2f4]
call fcn.0051d990
cmp dword [ebp - 0x328], 0
lea esi, [ebp - 0xf8]
mov ecx, 0x2a
lea edi, [ebp - 0x248]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x2f4]
mov byte [ebp - 0x219], 1
mov ax, word [esi + 0x20]
mov word [ebp - 0x242], ax
je 0x528a8b
mov eax, dword [ebp - 0x330]
mov word [ebp - 0x228], ax
mov edx, dword [esi]
lea eax, [ebp - 0x248]
push eax
movzx eax, word [ebp - 0xf4]
mov ecx, esi
push eax
call dword [edx + 4]
mov eax, dword [ebp - 0x2f8]
mov ecx, dword [ebx + 0x1c]
movzx eax, al
mov dword [esi + 0x276b4], ecx
mov dword [esi + eax*4 + 0x1aa454], ecx
mov eax, dword [esi + 0x4c]
mov dword [eax + 0xa04], 0
mov eax, dword [ebp - 0x330]
jmp 0x525db5
cmp dword [ebx + 0x20], 1
jne 0x528d87
cmp esi, edi
mov edi, dword [ebp - 0x2f4]
jl 0x528d8d
cmp dword [ebp - 0x48], ecx
jne 0x528d8d
cmp edx, eax
jne 0x528d8d
mov edx, dword [edi + 0x4c]
mov eax, dword [edx + 0x9d8]
cmp eax, 4
jl 0x528b54
cmp eax, 9
jg 0x528b54
imul eax, dword [edx + 0x5c], 0xe1
mov ecx, dword [edx + 0x60]
add eax, dword [ecx + 0x2d0]
mov eax, dword [eax*4 + 0x9a1960]
cmp eax, 2
lea esi, [eax - 2]
cmovbe esi, eax
mov eax, dword [0x9c25d8]
cmp dword [eax + 0x1c], 0
je 0x528b54
mov ecx, dword [ecx + 0x2e4]
mov eax, dword [edx + 0x7f0]
imul ecx, esi
lea eax, [eax + ecx*4]
cmp dword [ebx + 0x1c], eax
jb 0x525899
cmp dword [edi + 0x40], 0
je case.0x525865.83
movss xmm0, dword [0x60541c]
comiss xmm0, dword [ebx + 0x14]
mov esi, dword [ebp - 0x2fc]
jbe 0x528b90
movss xmm0, dword [esi + 0x28]
movss dword [ebx + 0x10], xmm0
movss xmm0, dword [esi + 0x2c]
movss dword [ebx + 0x18], xmm0
movss xmm0, dword [esi + 0x30]
movss dword [ebx + 0x14], xmm0
movsx eax, byte [edx + 0x621]
and eax, 0xf
cmp eax, 1
jae 0x528ba6
mov eax, 1
jmp 0x528bb0
mov ecx, 7
cmp eax, ecx
cmova eax, ecx
movd xmm0, eax
mov eax, dword [0x9c25b0]
cvtdq2ps xmm0, xmm0
movss dword [edx + 0x1d8], xmm0
cmp dword [eax + 0x4c], edx
jne 0x528bd2
cvttss2si eax, xmm0
mov dword [0x626df0], eax
mov ecx, dword [edi + 0x4c]
movss xmm0, dword [ebx + 0x10]
ucomiss xmm0, dword [ecx + 0x28]
lahf
test ah, 0x44
jp 0x528bf7
movss xmm0, dword [ebx + 0x18]
ucomiss xmm0, dword [ecx + 0x2c]
lahf
test ah, 0x44
jnp 0x525899
mov eax, dword [ebx + 0x1c]
mov dword [edi + 0x26f28], 0
mov dword [ecx + 0xa04], esi
mov dword [edi + 0x27768], eax
mov eax, dword [edi + 0x4c]
cmp byte [eax + 0xa2c], 0
jne case.0x525865.83
mov esi, dword [edi + 0x1a9c2c]
cvttss2si ecx, dword [eax + 0x28]
cvttss2si edx, dword [eax + 0x2c]
test esi, esi
je 0x528c3a
mov edx, dword [edi + 0x1a9c30]
mov eax, dword [ebp - 0x2fc]
cmove esi, ecx
cvttss2si ecx, dword [eax + 0x28]
cvttss2si edi, dword [eax + 0x2c]
mov dword [ebp - 0x48], ecx
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x300], edi
mov edi, ecx
sub edi, esi
cmp esi, ecx
mov ecx, edi
mov dword [ebp - 0x32c], edi
mov edi, dword [ebp - 0x300]
cmovg ecx, eax
mov dword [ebp - 0x32c], ecx
mov eax, edi
sub eax, edx
mov ecx, edx
sub ecx, edi
cmp edx, edi
cmovle ecx, eax
cmp dword [ebp - 0x32c], 7
mov dword [ebp - 0x308], ecx
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x308]
jg 0x528cb9
cmp eax, 7
jg 0x528cb9
mov edi, dword [ebp - 0x32c]
lea eax, [edi + eax*8]
mov edi, dword [ebp - 0x300]
mov eax, dword [eax*4 + 0x5ec9c8]
jmp 0x528cc8
cmp dword [ebp - 0x32c], eax
jle 0x528cc7
mov eax, dword [ebp - 0x32c]
inc eax
mov dword [ebp - 0x4c], eax
xor eax, eax
cmp esi, ecx
setle al
lea eax, [eax*2 - 1]
mov dword [ebp - 0x33c], eax
xor eax, eax
cmp edx, edi
setle al
xor edi, edi
lea eax, [eax*2 - 1]
mov dword [ebp - 0x300], eax
mov eax, dword [ebp - 0x2f8]
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
mov eax, dword [eax + 0x62e8f0]
add eax, dword [ebp - 0x328]
mov dword [ebp - 0x308], eax
cmp dword [ebp - 0x4c], eax
jle 0x528d66
nop dword [eax + eax]
cmp edi, 0x1f4
jg 0x525899
cmp esi, ecx
je 0x528d36
add esi, dword [ebp - 0x33c]
mov ecx, dword [ebp - 0x2fc]
cvttss2si eax, dword [ecx + 0x2c]
mov ecx, dword [ebp - 0x48]
cmp edx, eax
je 0x528d4e
add edx, dword [ebp - 0x300]
push eax
push ecx
mov ecx, esi
inc edi
call fcn.0049a800
mov ecx, dword [ebp - 0x48]
add esp, 8
cmp eax, dword [ebp - 0x308]
jg 0x528d20
mov edi, dword [ebp - 0x2f4]
mov ecx, edi
push dword [ebx + 0x1c]
mov dword [edi + 0x27850], esi
mov dword [edi + 0x27854], edx
call fcn.0051b940
jmp 0x525db5
mov edi, dword [ebp - 0x2f4]
push dword [ebx + 0x1c]
mov ecx, edi
call fcn.0051b940
jmp 0x525db5
push dword [ebx + 0x1c]
mov ecx, esi
mov dword [esi + 0x100], 0
call fcn.0051b940
jmp 0x525db5