Function at 0x514021
Capabilities:
Reference sql statements

Disassembly:
sub esp, 0x24
push ebp
mov ebp, ecx
mov dword [esp + 0x18], ebp
call fcn.00514910
test eax, eax
je 0x5148c5
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x5148c5
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0xd91f5c]
shl ecx, 8
push ebx
push esi
mov esi, 0x1f
push edi
lea eax, [eax + eax*4]
div ecx
mov dword [ebp + 0xe91c], eax
mov eax, dword [ebp + 0xe910]
cmp eax, 0x20
cmovb esi, eax
test byte [ebp + 0xe920], 0x20
je 0x5135b8
cmp dword [ebp + 0xe928], 0
je 0x5135b8
mov eax, 6
cmp esi, eax
cmovl esi, eax
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x5135dc
lea eax, [ecx - 0x80]
lea ecx, [esi + 4]
imul eax, ecx
cdq
and edx, 0xf
lea ecx, [edx + eax]
sar ecx, 4
sub ecx, 0xffffff80
sar esi, 1
test byte [0xd94e24], 4
je 0x5135f0
mov esi, dword [esi*4 + str.____hpx]
jmp 0x5135f7
mov esi, dword [esi*4 + 0x5715b0]
mov eax, dword [ebp + 0xe964]
add eax, 0x10
imul eax, ecx
mov ecx, 0x200
shr eax, 6
cmp eax, ecx
cmova eax, ecx
test dword [ebp + 0xe90c], 0x400
je 0x513636
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x513636
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.00514bf0
add esp, 0xc
shl eax, 7
xor edx, edx
div esi
mov ecx, 0x180
mov dword [ebp + 0xe914], 0
cmp eax, ecx
mov esi, ebp
cmova eax, ecx
mov dword [esp + 0x30], eax
lea ebx, [ecx - 0x80]
xor eax, eax
mov dword [esp + 0x18], eax
mov edx, dword [esi + 0x24]
test edx, 0x400
je 0x51368f
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x18]
jne 0x51368f
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test edx, 0x100
jne 0x5147d7
cmp eax, dword [ebp + 0xe910]
jb 0x5136ad
cmp dword [esi + 0x20], 0
je 0x5147d7
mov ecx, dword [esi + 0x78]
movsx eax, word [esi + 0xd2]
add ecx, eax
mov dword [esi + 0xc], 0
mov dword [esi + 0x6c], 0
mov dword [esi + 0x70], ecx
jns 0x5136d5
mov dword [esi + 0x70], 0
jmp 0x5136e3
cmp ecx, 0x100
mov eax, ecx
cmovg eax, ebx
mov dword [esi + 0x70], eax
cmp dword [esi + 0x80], 0
mov ebx, edx
mov dword [esi + 0x5c], 0
je 0x514189
cmp dword [esi + 0x20], 0
je 0x514189
movsx ecx, word [esi + 0xd0]
xor edi, edi
mov eax, dword [esi + 0x74]
add eax, ecx
cmovns edi, eax
mov eax, 0x100
cmp edi, 0x100
cmovg edi, eax
test edx, 0x20000
je 0x5137ca
mov edx, dword [esi + 0xc8]
and edx, 0x3f
test edi, edi
jle 0x51379a
mov eax, dword [ebp + 0xe920]
movzx ebx, byte [esi + 0xe5]
and al, 4
movzx ecx, al
movzx eax, byte [esi + 0xe3]
neg ecx
sbb ecx, ecx
and eax, 3
add ecx, 6
sub eax, 1
je 0x51378b
sub eax, 1
je 0x513781
sub eax, 1
je 0x513777
movsx eax, word [edx*2 + 0x570a30]
jmp 0x513793
movsx eax, word [edx*2 + 0x570bb0]
jmp 0x513793
movsx eax, word [edx*2 + 0x570b30]
jmp 0x513793
movsx eax, word [edx*2 + 0x570ab0]
imul eax, ebx
sar eax, cl
add edi, eax
cmp dword [ebp + 0xe92c], 0
jne 0x5137b8
test dword [ebp + 0xe920], 0x122
je 0x5137ca
test byte [ebp + 0xe90c], 4
jne 0x5137ca
movzx eax, byte [esi + 0xe4]
add eax, edx
and eax, 0x3f
mov dword [esi + 0xc8], eax
cmp byte [esi + 0xd8], 0x12
mov dword [esp + 0x2c], edi
jne 0x513834
movzx ecx, byte [esi + 0xf3]
mov ebx, dword [ebp + 0xe920]
mov edx, ecx
shr edx, 4
and ecx, 0xf
add ecx, edx
test bl, 0x20
je 0x5137fc
test byte [ebp + 0xe90c], 4
je 0x513800
add ecx, 2
inc edx
movzx eax, byte [esi + 0xf2]
cmp eax, ecx
sbb ecx, ecx
and ecx, eax
cmp dword [ebp + 0xe92c], 0
jne 0x51381b
test bl, 0x22
je 0x51382d
mov al, cl
inc al
cmp ecx, edx
mov byte [esi + 0xf2], al
sbb edi, edi
and edi, dword [esp + 0x2c]
or dword [esi + 0x24], 0x1000000
test edi, edi
jns 0x51383c
xor edi, edi
jmp 0x51384a
cmp edi, 0x100
mov eax, 0x100
cmovg edi, eax
mov ecx, dword [esi + 0x8c]
mov edx, dword [esi + 0x24]
shl edi, 6
test ecx, ecx
je 0x513b8b
test edx, 0x200000
je 0x513946
mov al, byte [ecx + 0x22c]
test al, al
je 0x513946
mov edx, dword [esi + 0x94]
mov dword [esp + 0x28], edx
xor edx, edx
movzx ebx, al
sub ebx, 1
je 0x5138ab
add ecx, 0xc
nop
movzx eax, word [ecx]
cmp dword [esp + 0x28], eax
jle 0x5138a3
inc edx
add ecx, 2
cmp edx, ebx
jb 0x513890
jmp 0x5138a5
mov ebx, edx
mov ecx, dword [esi + 0x8c]
movzx eax, word [ecx + ebx*2 + 0xc]
mov dword [esp + 0x20], eax
cmp dword [esp + 0x28], eax
jl 0x5138c7
movzx ecx, byte [ebx + ecx + 0xcc]
shl ecx, 2
jmp 0x513926
test ebx, ebx
je 0x5138e8
mov edx, dword [esi + 0x8c]
add ecx, ebx
mov dword [esp + 0x2c], ecx
movzx ecx, byte [ecx + 0xcb]
movzx edx, word [edx + ebx*2 + 0xa]
shl ecx, 2
jmp 0x5138fa
mov ebp, dword [esp + 0x24]
xor ecx, ecx
xor edx, edx
add ebx, dword [esi + 0x8c]
mov dword [esp + 0x2c], ebx
cmp eax, edx
jbe 0x513926
mov ebx, dword [esp + 0x28]
cmp ebx, edx
jle 0x513926
mov eax, dword [esp + 0x2c]
sub ebx, edx
movzx eax, byte [eax + 0xcc]
shl eax, 2
sub eax, ecx
imul eax, ebx
mov ebx, dword [esp + 0x20]
sub ebx, edx
cdq
idiv ebx
add ecx, eax
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov ecx, 0x100
cmp eax, 0x100
cmovg eax, ecx
mov ecx, dword [esi + 0x8c]
imul edi, eax
sar edi, 8
mov edx, dword [esi + 0x24]
mov dword [esp + 0x1c], edx
test edx, 0x400000
je 0x513a54
mov al, byte [ecx + 0x22d]
test al, al
je 0x513a54
mov ecx, dword [esi + 0x98]
xor edx, edx
movzx ebx, al
mov dword [esp + 0x2c], ecx
sub ebx, 1
je 0x513999
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x2c], eax
jle 0x513997
inc edx
add ecx, 2
cmp edx, ebx
jb 0x513984
jmp 0x513999
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov edx, dword [esp + 0x2c]
movzx eax, word [ecx + ebx*2 + 0x4c]
movzx ecx, byte [ebx + ecx + 0xec]
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], ecx
cmp edx, eax
jge 0x5139fe
test ebx, ebx
je 0x5139d5
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x5139dc
mov ecx, 0x80
xor eax, eax
cmp dword [esp + 0x20], eax
jbe 0x5139fe
cmp edx, eax
jle 0x5139fe
mov ebx, dword [esp + 0x28]
sub edx, eax
sub dword [esp + 0x20], eax
sub ebx, ecx
imul ebx, edx
mov eax, ebx
cdq
idiv dword [esp + 0x20]
add ecx, eax
mov ebx, dword [esi + 0x78]
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov ecx, 0x40
cmp eax, 0x40
cmovg eax, ecx
lea ecx, [eax - 0x20]
cmp ebx, 0x80
jl 0x513a2a
mov eax, 0x100
sub eax, ebx
imul eax, ecx
jmp 0x513a2f
imul ecx, ebx
mov eax, ecx
cdq
xor ecx, ecx
and edx, 0x1f
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 5
add eax, ebx
cmovns ecx, eax
mov eax, 0x100
cmp ecx, 0x100
cmovg ecx, eax
mov dword [esi + 0x70], ecx
test edx, 0x400
je 0x513a8e
mov eax, dword [esi + 0x8c]
mov ecx, dword [esi + 0x7c]
mov eax, dword [eax]
test eax, eax
je 0x513a87
add eax, eax
sub ecx, eax
mov dword [esi + 0x7c], ecx
test ecx, ecx
jg 0x513a7f
mov dword [esi + 0x7c], 0
xor ecx, ecx
imul edi, ecx
sar edi, 0x10
jmp 0x513a8e
xor eax, eax
test ecx, ecx
cmove edi, eax
mov eax, dword [esi + 0x8c]
mov bl, byte [eax + 0x247]
test bl, bl
je 0x513aea
mov edx, dword [esi + 0x70]
test edx, edx
je 0x513ae6
mov cl, byte [esi + 0xd4]
test cl, cl
je 0x513ae6
movzx eax, byte [eax + 0x248]
movzx ecx, cl
sub ecx, eax
movsx eax, bl
dec ecx
imul ecx, eax
mov eax, ecx
test eax, eax
jns 0x513acb
add eax, 7
sar eax, 3
xor ecx, ecx
add eax, edx
cmovns ecx, eax
mov eax, 0x100
cmp ecx, 0x100
cmovg ecx, eax
mov dword [esi + 0x70], ecx
mov edx, dword [esp + 0x1c]
test edi, edi
je 0x513b19
mov eax, dword [esi + 0xac]
imul eax, dword [esi + 0xa8]
push 0x100000
push eax
mov eax, dword [ebp + 0xe960]
imul eax, edi
push eax
call fcn.00514bf0
mov edx, dword [esi + 0x24]
add esp, 0xc
mov dword [esi + 0x6c], eax
mov ebx, dword [esi + 0x80]
mov eax, dword [ebp + 0xe974]
cmp ebx, eax
jge 0x513b31
mov dword [esi + 0x80], eax
mov ebx, eax
and edx, 0x180000
cmp edx, 0x180000
jne 0x513b5d
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.00512c50
push eax
mov ecx, ebp
call fcn.00512e30
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x513bcc
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
sub edx, 1
je 0x513ba3
sub edx, 1
jne 0x513bcc
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x513bad
test edx, 0x400
je 0x513aea
mov dword [esi + 0x7c], 0
jmp 0x513b19
movzx ecx, byte [esi + 0xd9]
shr ecx, 4
push dword [esi + 0x84]
movzx eax, byte [esi + 0xd4]
push dword [esi + 0xb0]
add ecx, eax
push ecx
mov ecx, ebp
call fcn.00512e30
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x513bf5
cmp ebx, 0x1c4
jge 0x513be7
mov ebx, 0x1c4
jmp 0x513bf5
cmp ebx, 0xd60
mov eax, 0xd60
cmovg ebx, eax
mov ecx, dword [esi + 0x8c]
test ecx, ecx
je 0x513d61
test dword [esi + 0x24], 0x800000
je 0x513d61
mov dl, byte [ecx + 0x22e]
test dl, dl
je 0x513d61
mov eax, dword [esi + 0x9c]
movzx edi, dl
xor edx, edx
mov dword [esp + 0x28], eax
sub edi, 1
je 0x513c5b
add ecx, 0x8c
nop dword [eax + eax]
movzx eax, word [ecx]
cmp dword [esp + 0x28], eax
jle 0x513c53
inc edx
add ecx, 2
cmp edx, edi
jb 0x513c40
jmp 0x513c55
mov edi, edx
mov ecx, dword [esi + 0x8c]
movzx eax, word [ecx + edi*2 + 0x8c]
mov dword [esp + 0x2c], eax
cmp dword [esp + 0x28], eax
jl 0x513c7e
movzx eax, byte [edi + ecx + 0x10c]
lea ecx, [eax*8 - 0x100]
jmp 0x513ce5
test edi, edi
je 0x513cab
lea eax, [edi + ecx]
mov dword [esp + 0x20], eax
movzx eax, byte [eax + 0x10b]
lea ecx, [eax*8 - 0x100]
mov eax, dword [esi + 0x8c]
movzx edx, word [eax + edi*2 + 0x8a]
mov eax, dword [esp + 0x20]
jmp 0x513cb7
mov eax, dword [esi + 0x8c]
xor ecx, ecx
xor edx, edx
add eax, edi
cmp dword [esp + 0x2c], edx
jbe 0x513ce5
mov edi, dword [esp + 0x28]
cmp edi, edx
jle 0x513ce5
movzx eax, byte [eax + 0x10c]
sub edi, edx
lea eax, [eax*8 - 0x100]
sub eax, ecx
imul eax, edi
mov edi, dword [esp + 0x2c]
sub edi, edx
cdq
idiv edi
add ecx, eax
cmp ecx, 0xffffff00
jge 0x513cf4
mov ecx, 0xffffff00
jmp 0x513d02
cmp ecx, 0x100
mov eax, 0x100
cmovg ecx, eax
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x513d28
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.0053dce0
jmp 0x513d61
mov eax, 0xff
push 0x10000
test ecx, ecx
jns 0x513d46
neg ecx
cmp ecx, eax
cmovg ecx, eax
push dword [ecx*4 + 0x570db0]
jmp 0x513d56
cmp ecx, 0xff
cmovg ecx, eax
push dword [ecx*4 + 0x5711b0]
push ebx
call fcn.00514bf0
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x513eaa
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x20], edx
sub eax, 1
je 0x513daf
sub eax, 1
je 0x513da5
sub eax, 1
je 0x513d9b
movzx eax, word [edx*2 + 0x570a30]
jmp 0x513db7
movzx eax, word [edx*2 + 0x570bb0]
jmp 0x513db7
movzx eax, word [edx*2 + 0x570b30]
jmp 0x513db7
movzx eax, word [edx*2 + 0x570ab0]
cwde
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0xe920]
cmp eax, 0x20
jne 0x513dd3
test byte [ebp + 0xe90c], 4
lea ecx, [eax - 0x19]
je 0x513dd8
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, dword [esp + 0x2c]
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x513e7b
test al, 0x20
je 0x513e7b
mov dword [esp + 0x2c], edi
push 0x10000
test edi, edi
jns 0x513e3e
neg edi
mov eax, edi
mov dword [esp + 0x30], edi
sar eax, 2
push dword [eax*4 + 0x5711b0]
push ebx
call fcn.00514bf0
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
sub edi, ebx
and eax, 3
je 0x513e77
push 0x10000
push dword [eax*4 + 0x570d70]
jmp 0x513e6a
sar edi, 2
push dword [edi*4 + 0x570db0]
push ebx
call fcn.00514bf0
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
sub edi, ebx
and eax, 3
je 0x513e77
push 0x10000
push dword [eax*4 + 0x570d30]
push ebx
call fcn.00514bf0
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x20]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x513e98
test byte [ebp + 0xe920], 0x20
je 0x513eaa
test byte [ebp + 0xe90c], 4
jne 0x513eaa
movzx eax, byte [esi + 0xe1]
add eax, edx
and eax, 0x3f
mov dword [esi + 0xc4], eax
mov edx, dword [esi + 0x24]
test edx, 0x40000
je 0x513f49
mov edi, dword [esi + 0xcc]
movzx ecx, byte [esi + 0xe6]
and ecx, 3
lea eax, [edi + 0x10]
shr eax, 2
and eax, 0x3f
sub ecx, 1
je 0x513eff
sub ecx, 1
je 0x513ef5
sub ecx, 1
je 0x513eeb
movzx edx, word [eax*2 + 0x570a30]
jmp 0x513f07
movzx edx, word [eax*2 + 0x570bb0]
jmp 0x513f07
movzx edx, word [eax*2 + 0x570b30]
jmp 0x513f07
movzx edx, word [eax*2 + 0x570ab0]
movzx eax, byte [esi + 0xe7]
movzx ecx, byte [esi + 0xe8]
add eax, edi
mov dword [esi + 0xcc], eax
movsx eax, dx
mov edx, dword [esi + 0x24]
imul ecx, eax
mov eax, dword [esi + 0x70]
add ecx, 2
sar ecx, 3
add eax, ecx
xor ecx, ecx
test eax, eax
cmovns ecx, eax
mov eax, 0x100
cmp ecx, 0x100
cmovg ecx, eax
mov dword [esi + 0x70], ecx
mov edi, dword [esi + 0x90]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
test edi, edi
je 0x5140ac
mov al, byte [edi + 0x28]
test al, al
je 0x5140ac
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x513f74
movzx edx, al
jmp 0x513fb5
test byte [ebp + 0xe920], 0x20
je 0x513f85
movzx eax, cl
shl eax, 3
jmp 0x513f9a
test edx, 0x200
jne 0x513fa0
movzx eax, al
xor edx, edx
shl eax, 8
movzx ecx, cl
div ecx
add dword [esi + 0xbc], eax
mov edx, dword [esi + 0xbc]
mov eax, edx
movzx ecx, byte [edi + 0x28]
sar eax, 8
cmp eax, ecx
jle 0x513fbe
mov edx, ecx
shl edx, 8
mov dword [esi + 0xbc], edx
movzx ecx, byte [edi + 0x29]
add ecx, dword [esi + 0xc0]
mov dword [esi + 0xc0], ecx
movzx eax, byte [edi + 0x26]
dec eax
mov dword [esp + 0x28], ecx
cmp eax, 3
ja case.default.0x513fdc
jmp dword [eax*4 + 0x5148fc]
mov eax, ecx
and eax, 0x3f
movsx ecx, word [eax*2 + 0x570bb0]
mov eax, dword [esp + 0x28]
inc eax
mov dword [esi + 0xc0], eax
jmp 0x51403d
shr ecx, 1
mov dword [esp + 0x28], ecx
mov ecx, 0xffffffc0
sub ecx, dword [esp + 0x28]
and ecx, 0x7f
sub ecx, 0x40
jmp 0x51403d
shr ecx, 1
sub ecx, 0x40
and ecx, 0x7f
sub ecx, 0x40
jmp 0x51403d
test cl, 0x80
mov eax, 0x40
mov ecx, 0xffffffc0
cmovne ecx, eax
jmp 0x51403d
movzx eax, cl
movsx ecx, byte [eax + 0x570c30]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x5140a3
test ecx, ecx
jns 0x514067
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x570db0]
mov eax, dword [eax*4 + 0x570db4]
jmp 0x51407a
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x5711b0]
mov eax, dword [eax*4 + 0x5711b4]
sub eax, edx
sar ecx, 2
and ecx, 0x3f
imul eax, ecx
push 0x100
sar eax, 6
add eax, edx
push eax
push ebx
call fcn.00514bf0
mov ebx, eax
add esp, 0xc
movzx ecx, bl
sar ebx, 8
jmp 0x5140ac
sar ecx, 6
add ebx, ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebp + 0xe920]
cmp ebx, dword [ebp + 0xe974]
jg 0x5140d1
test al, 2
je 0x5140cb
mov dword [esi + 0x20], 0
mov eax, dword [ebp + 0xe920]
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x514102
test al, 0x20
jne 0x5140e5
cmp ebx, 0x100000
jl 0x5140fa
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ebx, dword [ebp + 0xe978]
xor ecx, ecx
push ecx
push dword [esi + 0x84]
mov ecx, ebp
push ebx
call fcn.00512ff0
test byte [ebp + 0xe920], 0x20
je 0x514136
cmp eax, 0x100
jae 0x514136
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0xd91f5c]
push 0x10000
push eax
call fcn.00514bf0
add esp, 0xc
lea ecx, [eax - 0xffb0]
cmp ecx, 0xe0
mov ecx, 0x10000
cmovbe eax, ecx
mov ecx, dword [ebp + 0xe968]
cmp ecx, 0x80
je 0x514172
imul eax, ecx
shr eax, 7
mov ebx, dword [esi + 0x24]
cmp eax, 0xff0000
mov ecx, 0xff0000
cmova eax, ecx
inc eax
and eax, 0xfffffffc
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x514468
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x514326
mov eax, dword [esi + 0x94]
mov ebx, edi
inc eax
mov dword [esi + 0x94], eax
test byte [edx + 4], 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], eax
je 0x514269
movzx eax, byte [edx + 0x230]
cmp dword [ebp + 0xe920], 4
movzx ecx, word [edx + eax*2 + 0xc]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
lea eax, [ecx + 1]
cmove eax, ecx
cmp dword [esp + 0x2c], eax
jne 0x514269
movzx eax, byte [edx + 0x22f]
movzx ecx, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], ecx
mov ah, byte [edx + 0x230]
mov al, byte [edx + 0x22f]
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x13], ah
mov dword [esp + 0x14], ecx
cmp ah, al
jne 0x514269
movzx eax, al
mov dword [esp + 0x14], ecx
cmp byte [eax + edx + 0xcc], 0
jne 0x514269
test byte [ebp + 0xe920], 4
je 0x51424f
movzx eax, byte [edx + 0x22c]
mov dword [esp + 0x14], ecx
movzx ecx, byte [esp + 0x13]
inc ecx
cmp ecx, eax
jne 0x514269
mov ecx, dword [esp + 0x2c]
mov ebx, edi
mov dword [esi + 0x7c], 0
or ebx, 0x400
mov edi, ecx
mov dword [esi + 0x24], ebx
mov dword [esp + 0x14], edi
jmp 0x51426d
mov edi, dword [esp + 0x14]
mov ecx, ebx
and ecx, 0x200
test byte [edx + 4], 2
je 0x5142a9
test ecx, ecx
jne 0x5142a9
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp edi, eax
jne 0x5142a2
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
mov edi, ebx
jmp 0x514326
movzx eax, byte [edx + 0x22c]
mov edi, ebx
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esp + 0x14], eax
jbe 0x514326
test byte [ebp + 0xe920], 0x20
jne 0x5142ca
test ecx, ecx
je 0x5142d3
or ebx, 0x400
mov dword [esi + 0x24], ebx
movzx eax, byte [edx + 0x22c]
mov edi, ebx
movzx eax, word [edx + eax*2 + 0xa]
mov dword [esi + 0x94], eax
movzx eax, byte [edx + 0x22c]
cmp byte [eax + edx + 0xcb], 0
jne 0x514326
mov eax, dword [esp + 0x18]
cmp eax, dword [ebp + 0xe910]
jae 0x51430d
test byte [ebp + 0xe920], 0x20
je 0x514326
mov edi, ebx
mov dword [esi + 0x7c], 0
or edi, 0x400
mov dword [esi + 0x6c], 0
mov dword [esi + 0x24], edi
test edi, 0x400000
je 0x5143ca
mov eax, dword [esi + 0x98]
inc eax
mov dword [esi + 0x98], eax
mov ebx, eax
test byte [edx + 4], 0x20
mov dword [esp + 0x2c], eax
je 0x51437a
movzx eax, byte [edx + 0x234]
cmp dword [ebp + 0xe920], 4
movzx ecx, word [edx + eax*2 + 0x4c]
lea eax, [ecx + 1]
cmove eax, ecx
cmp ebx, eax
jne 0x51437a
movzx eax, byte [edx + 0x233]
movzx ebx, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], ebx
test byte [edx + 4], 0x10
je 0x5143ad
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp ebx, eax
jne 0x5143ad
test edi, 0x200
jne 0x5143ad
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
jmp 0x5143ca
movzx eax, byte [edx + 0x22d]
mov ecx, dword [esi + 0x98]
movzx eax, word [edx + eax*2 + 0x4a]
cmp ebx, eax
cmova ecx, eax
mov dword [esi + 0x98], ecx
mov ebx, edi
test edi, 0x800000
je 0x514468
mov ebx, dword [esi + 0x9c]
inc ebx
mov dword [esi + 0x9c], ebx
mov ecx, ebx
test dword [edx + 4], 0x100
je 0x514418
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp ebx, eax
jb 0x514418
movzx eax, byte [edx + 0x237]
movzx ecx, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], ecx
test byte [edx + 4], 0x80
je 0x51444b
test edi, 0x200
jne 0x51444b
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp ecx, eax
jne 0x514466
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x514460
movzx eax, byte [edx + 0x22e]
mov ebx, edi
movzx eax, word [edx + eax*2 + 0x8a]
cmp ecx, eax
jbe 0x514468
mov dword [esi + 0x9c], eax
mov ebx, edi
mov edx, dword [esi + 0x6c]
and ebx, 0xffff7fff
mov dword [esi + 0x24], ebx
mov dword [esp + 0x2c], edx
test edx, edx
jne 0x514486
cmp dword [esi + 0x14], edx
jne 0x514486
cmp dword [esi + 0x10], edx
je 0x51448f
or ebx, 0x8000
mov dword [esi + 0x24], ebx
mov edi, dword [esi + 0xc]
mov eax, edi
mov ecx, dword [esi + 0x2c]
sub ecx, dword [esi + 0x28]
sar eax, 0x10
inc eax
cmp eax, ecx
jl 0x5144a8
and ebx, 0xfffffffd
mov dword [esi + 0x24], ebx
mov eax, dword [esi + 0x60]
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
test eax, eax
je 0x51479b
cmp dword [esi + 0x20], 0
je 0x51479b
test edi, edi
je 0x51479b
mov dword [esi], eax
cmp dword [0xd91f64], 2
jb 0x51457a
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0xd91f50]
mov eax, eax
test eax, eax
jns 0x5144f8
add eax, 0x7f
sar eax, 7
mov ecx, dword [0xd94e24]
xor edx, edx
add eax, 0x80
mov ebx, 0x100
mov edi, ebx
cmovns edx, eax
cmp edx, 0x100
cmovg edx, ebx
sub edi, edx
test cl, 1
cmove edi, edx
mov edx, dword [esp + 0x2c]
imul edx, dword [esp + 0x30]
shr edx, 7
test ecx, 0x200
je 0x514563
mov eax, edx
shl eax, 7
sar eax, 8
cmp edi, 0x80
jge 0x514554
imul edi, edx
mov ebx, eax
sar edi, 8
mov dword [esi + 0x68], edi
jmp 0x514589
sub ebx, edi
mov edi, eax
imul ebx, edx
mov dword [esi + 0x68], edi
sar ebx, 8
jmp 0x514589
mov eax, edi
sub ebx, edi
imul eax, edx
imul ebx, edx
sar eax, 8
mov dword [esi + 0x68], eax
mov edi, eax
sar ebx, 8
jmp 0x514589
mov ebx, edx
imul ebx, dword [esp + 0x30]
shr ebx, 8
mov dword [esi + 0x68], ebx
mov edi, ebx
mov dword [esi + 0x64], ebx
cmp ebx, 0xffff
jle 0x5145a0
mov dword [esi + 0x64], 0xffff
mov ebx, 0xffff
cmp edi, 0xffff
jle 0x5145b4
mov dword [esi + 0x68], 0xffff
mov edi, 0xffff
test byte [0xd94e24], 8
mov ecx, dword [esi + 0x24]
jne 0x5145f2
mov edx, dword [esi + 0xc]
and ecx, 0xffffcfff
mov dword [esi + 0x24], ecx
mov eax, ecx
cmp edx, 0x10000
je 0x5145f2
test dword [0xd94e24], 0x410
mov dword [esp + 0x20], ecx
jne 0x5145ff
mov dword [esp + 0x20], ecx
cmp edx, 0xff00
jl 0x5145ff
or ecx, 0x1000
mov dword [esp + 0x20], ecx
mov dword [esi + 0x24], ecx
sar edi, 4
sar ebx, 4
mov edx, edi
mov dword [esi + 0x64], ebx
mov dword [esi + 0x68], edi
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
mov dword [esp + 0x2c], edx
test ecx, 0x800
je 0x51463d
cmp dword [0xd91f64], 2
mov dword [esp + 0x2c], edx
ja 0x51463d
neg edx
mov dword [esp + 0x2c], edx
mov dword [esi + 0x68], edx
test cl, cl
jns 0x514649
mov eax, dword [esi + 0xc]
neg eax
mov dword [esi + 0xc], eax
test ecx, 0x8000
je 0x514750
mov eax, dword [esi + 0x14]
cmp dword [esi + 0x10], ebx
jne 0x514665
cmp eax, edx
je 0x514750
mov ebp, dword [esi + 0x10]
mov edi, dword [0xd91f6c]
mov dword [esp + 0x14], ebx
sub dword [esp + 0x14], ebp
shl dword [esp + 0x14], 0xc
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
sub dword [esp + 0x1c], eax
shl dword [esp + 0x1c], 0xc
test dword [0xd94e24], 0x10000
mov dword [esp + 0x28], edi
jne 0x5146b7
test byte [0xd94e20], 9
je 0x5146e9
test byte [0xd94e24], 0x10
je 0x5146e9
cmp dword [0xd94e2c], 0x14
ja 0x5146e9
or eax, dword [esi + 0x10]
je 0x5146e9
mov eax, ebx
or eax, edx
je 0x5146e9
test ecx, 0x1000000
jne 0x5146e9
mov ecx, dword [ebp + 0xe91c]
mov eax, 0x800
cmp ecx, 0x800
cmovg ecx, eax
cmp ecx, edi
cmovl ecx, edi
mov edi, ecx
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x14]
cdq
idiv edi
mov ecx, dword [esp + 0x28]
mov edi, eax
mov eax, dword [esp + 0x1c]
cdq
idiv ecx
imul ecx, edi
mov edx, ebx
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], edi
sar ecx, 0xc
sub edx, ecx
mov ecx, dword [esp + 0x28]
imul ecx, eax
mov dword [esp + 0x1c], edx
mov dword [esi + 0x10], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x2c], edx
sar ecx, 0xc
sub dword [esp + 0x2c], ecx
or eax, edi
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x14], ecx
je 0x514742
mov eax, dword [esp + 0x28]
mov dword [esi + 0x5c], eax
mov eax, dword [esp + 0x1c]
jmp 0x514763
mov eax, dword [esp + 0x20]
and eax, 0xffff7fff
mov dword [esi + 0x24], eax
jmp 0x514759
and ecx, 0xffff7fff
mov dword [esi + 0x24], ecx
mov ecx, edx
mov dword [esi + 0x14], edx
mov eax, ebx
mov dword [esi + 0x10], ebx
shl eax, 0xc
shl ecx, 0xc
mov dword [esi + 0x34], ecx
mov ecx, dword [esp + 0x18]
mov dword [esi + 0x30], eax
mov eax, dword [ebp + 0xe914]
mov dword [ebp + eax*4 + 0x8000], ecx
inc dword [ebp + 0xe914]
cmp dword [ebp + 0xe914], 0x80
jae 0x5147f7
mov eax, ecx
mov ebx, 0x100
jmp 0x5147e1
cmp dword [esi + 0xa4], 0xff
mov dword [esi], 0
jbe 0x5147b7
mov dword [esi + 0xa4], 0
mov eax, dword [esp + 0x18]
mov ebx, 0x100
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x20], 0
jmp 0x5147e1
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x18], eax
cmp eax, 0x80
jb 0x513660
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0xd91f54]
jb 0x51489e
test dword [0xd94e24], 0x10000
jne 0x51489e
test eax, eax
je 0x51489e
mov ecx, 1
lea edx, [ebp + 0x8004]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
mov ebx, ecx
mov esi, eax
mov dword [esp + 0x28], ebx
cmp ecx, eax
jae 0x51488c
mov edi, ecx
mov ebp, dword [edx - 4]
mov esi, eax
mov ebx, dword [esp + 0x24]
mov eax, ebp
mov ecx, dword [edx]
shl eax, 8
shl ecx, 8
mov eax, dword [eax + ebx + 0x6c]
cmp eax, dword [ecx + ebx + 0x6c]
mov ebx, dword [edx]
jge 0x51487c
mov dword [edx], ebp
inc edi
mov ebp, dword [esp + 0x24]
mov dword [edx - 4], ebx
add edx, 4
mov esi, dword [ebp + 0xe914]
mov eax, esi
cmp edi, esi
jb 0x514842
jmp 0x514880
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x28]
add edx, 4
inc ecx
mov dword [esp + 0x30], edx
mov eax, esi
mov dword [esp + 0x2c], ecx
cmp ebx, esi
jb 0x514834
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x5148f2
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x5148cc
or ecx, 0x200
mov dword [ebp + 0xe90c], ecx
xor eax, eax
pop ebp
add esp, 0x24
ret
mov ecx, dword [ebp + 0xe91c]
cmp eax, ecx
jbe 0x5148e8
sub eax, ecx
mov dword [ebp + 0xe984], eax
mov eax, 1
pop ebp
add esp, 0x24
ret
mov dword [ebp + 0xe984], 0
mov eax, 1
pop ebp
add esp, 0x24
ret