Function at 0x5143a1
Capabilities:
Reference sql statements

Disassembly:
sub esp, 0x24
push ebp
mov ebp, ecx
mov dword [esp + 0x18], ebp
call fcn.00514c90
test eax, eax
je 0x514c45
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x514c45
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0xd91ffc]
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 0x513938
cmp dword [ebp + 0xe928], 0
je 0x513938
mov eax, 6
cmp esi, eax
cmovl esi, eax
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x51395c
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 [0xd94ec4], 4
je 0x513970
mov esi, dword [esi*4 + str.____hpx]
jmp 0x513977
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 0x5139b6
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x5139b6
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.00514f70
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 0x513a0f
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x18]
jne 0x513a0f
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test edx, 0x100
jne 0x514b57
cmp eax, dword [ebp + 0xe910]
jb 0x513a2d
cmp dword [esi + 0x20], 0
je 0x514b57
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 0x513a55
mov dword [esi + 0x70], 0
jmp 0x513a63
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 0x514509
cmp dword [esi + 0x20], 0
je 0x514509
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 0x513b4a
mov edx, dword [esi + 0xc8]
and edx, 0x3f
test edi, edi
jle 0x513b1a
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 0x513b0b
sub eax, 1
je 0x513b01
sub eax, 1
je 0x513af7
movsx eax, word [edx*2 + 0x570a30]
jmp 0x513b13
movsx eax, word [edx*2 + 0x570bb0]
jmp 0x513b13
movsx eax, word [edx*2 + 0x570b30]
jmp 0x513b13
movsx eax, word [edx*2 + 0x570ab0]
imul eax, ebx
sar eax, cl
add edi, eax
cmp dword [ebp + 0xe92c], 0
jne 0x513b38
test dword [ebp + 0xe920], 0x122
je 0x513b4a
test byte [ebp + 0xe90c], 4
jne 0x513b4a
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 0x513bb4
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 0x513b7c
test byte [ebp + 0xe90c], 4
je 0x513b80
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 0x513b9b
test bl, 0x22
je 0x513bad
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 0x513bbc
xor edi, edi
jmp 0x513bca
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 0x513f0b
test edx, 0x200000
je 0x513cc6
mov al, byte [ecx + 0x22c]
test al, al
je 0x513cc6
mov edx, dword [esi + 0x94]
mov dword [esp + 0x28], edx
xor edx, edx
movzx ebx, al
sub ebx, 1
je 0x513c2b
add ecx, 0xc
nop
movzx eax, word [ecx]
cmp dword [esp + 0x28], eax
jle 0x513c23
inc edx
add ecx, 2
cmp edx, ebx
jb 0x513c10
jmp 0x513c25
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 0x513c47
movzx ecx, byte [ebx + ecx + 0xcc]
shl ecx, 2
jmp 0x513ca6
test ebx, ebx
je 0x513c68
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 0x513c7a
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 0x513ca6
mov ebx, dword [esp + 0x28]
cmp ebx, edx
jle 0x513ca6
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 0x513dd4
mov al, byte [ecx + 0x22d]
test al, al
je 0x513dd4
mov ecx, dword [esi + 0x98]
xor edx, edx
movzx ebx, al
mov dword [esp + 0x2c], ecx
sub ebx, 1
je 0x513d19
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x2c], eax
jle 0x513d17
inc edx
add ecx, 2
cmp edx, ebx
jb 0x513d04
jmp 0x513d19
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 0x513d7e
test ebx, ebx
je 0x513d55
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x513d5c
mov ecx, 0x80
xor eax, eax
cmp dword [esp + 0x20], eax
jbe 0x513d7e
cmp edx, eax
jle 0x513d7e
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 0x513daa
mov eax, 0x100
sub eax, ebx
imul eax, ecx
jmp 0x513daf
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 0x513e0e
mov eax, dword [esi + 0x8c]
mov ecx, dword [esi + 0x7c]
mov eax, dword [eax]
test eax, eax
je 0x513e07
add eax, eax
sub ecx, eax
mov dword [esi + 0x7c], ecx
test ecx, ecx
jg 0x513dff
mov dword [esi + 0x7c], 0
xor ecx, ecx
imul edi, ecx
sar edi, 0x10
jmp 0x513e0e
xor eax, eax
test ecx, ecx
cmove edi, eax
mov eax, dword [esi + 0x8c]
mov bl, byte [eax + 0x247]
test bl, bl
je 0x513e6a
mov edx, dword [esi + 0x70]
test edx, edx
je 0x513e66
mov cl, byte [esi + 0xd4]
test cl, cl
je 0x513e66
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 0x513e4b
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 0x513e99
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.00514f70
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 0x513eb1
mov dword [esi + 0x80], eax
mov ebx, eax
and edx, 0x180000
cmp edx, 0x180000
jne 0x513edd
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.00512fd0
push eax
mov ecx, ebp
call fcn.005131b0
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x513f4c
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
sub edx, 1
je 0x513f23
sub edx, 1
jne 0x513f4c
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x513f2d
test edx, 0x400
je 0x513e6a
mov dword [esi + 0x7c], 0
jmp 0x513e99
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.005131b0
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x513f75
cmp ebx, 0x1c4
jge 0x513f67
mov ebx, 0x1c4
jmp 0x513f75
cmp ebx, 0xd60
mov eax, 0xd60
cmovg ebx, eax
mov ecx, dword [esi + 0x8c]
test ecx, ecx
je 0x5140e1
test dword [esi + 0x24], 0x800000
je 0x5140e1
mov dl, byte [ecx + 0x22e]
test dl, dl
je 0x5140e1
mov eax, dword [esi + 0x9c]
movzx edi, dl
xor edx, edx
mov dword [esp + 0x28], eax
sub edi, 1
je 0x513fdb
add ecx, 0x8c
nop dword [eax + eax]
movzx eax, word [ecx]
cmp dword [esp + 0x28], eax
jle 0x513fd3
inc edx
add ecx, 2
cmp edx, edi
jb 0x513fc0
jmp 0x513fd5
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 0x513ffe
movzx eax, byte [edi + ecx + 0x10c]
lea ecx, [eax*8 - 0x100]
jmp 0x514065
test edi, edi
je 0x51402b
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 0x514037
mov eax, dword [esi + 0x8c]
xor ecx, ecx
xor edx, edx
add eax, edi
cmp dword [esp + 0x2c], edx
jbe 0x514065
mov edi, dword [esp + 0x28]
cmp edi, edx
jle 0x514065
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 0x514074
mov ecx, 0xffffff00
jmp 0x514082
cmp ecx, 0x100
mov eax, 0x100
cmovg ecx, eax
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x5140a8
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.0053e060
jmp 0x5140e1
mov eax, 0xff
push 0x10000
test ecx, ecx
jns 0x5140c6
neg ecx
cmp ecx, eax
cmovg ecx, eax
push dword [ecx*4 + 0x570db0]
jmp 0x5140d6
cmp ecx, 0xff
cmovg ecx, eax
push dword [ecx*4 + 0x5711b0]
push ebx
call fcn.00514f70
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x51422a
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x20], edx
sub eax, 1
je 0x51412f
sub eax, 1
je 0x514125
sub eax, 1
je 0x51411b
movzx eax, word [edx*2 + 0x570a30]
jmp 0x514137
movzx eax, word [edx*2 + 0x570bb0]
jmp 0x514137
movzx eax, word [edx*2 + 0x570b30]
jmp 0x514137
movzx eax, word [edx*2 + 0x570ab0]
cwde
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0xe920]
cmp eax, 0x20
jne 0x514153
test byte [ebp + 0xe90c], 4
lea ecx, [eax - 0x19]
je 0x514158
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, dword [esp + 0x2c]
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x5141fb
test al, 0x20
je 0x5141fb
mov dword [esp + 0x2c], edi
push 0x10000
test edi, edi
jns 0x5141be
neg edi
mov eax, edi
mov dword [esp + 0x30], edi
sar eax, 2
push dword [eax*4 + 0x5711b0]
push ebx
call fcn.00514f70
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
sub edi, ebx
and eax, 3
je 0x5141f7
push 0x10000
push dword [eax*4 + 0x570d70]
jmp 0x5141ea
sar edi, 2
push dword [edi*4 + 0x570db0]
push ebx
call fcn.00514f70
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
sub edi, ebx
and eax, 3
je 0x5141f7
push 0x10000
push dword [eax*4 + 0x570d30]
push ebx
call fcn.00514f70
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x20]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x514218
test byte [ebp + 0xe920], 0x20
je 0x51422a
test byte [ebp + 0xe90c], 4
jne 0x51422a
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 0x5142c9
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 0x51427f
sub ecx, 1
je 0x514275
sub ecx, 1
je 0x51426b
movzx edx, word [eax*2 + 0x570a30]
jmp 0x514287
movzx edx, word [eax*2 + 0x570bb0]
jmp 0x514287
movzx edx, word [eax*2 + 0x570b30]
jmp 0x514287
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 0x51442c
mov al, byte [edi + 0x28]
test al, al
je 0x51442c
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x5142f4
movzx edx, al
jmp 0x514335
test byte [ebp + 0xe920], 0x20
je 0x514305
movzx eax, cl
shl eax, 3
jmp 0x51431a
test edx, 0x200
jne 0x514320
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 0x51433e
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.0x51435c
jmp dword [eax*4 + 0x514c7c]
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 0x5143bd
shr ecx, 1
mov dword [esp + 0x28], ecx
mov ecx, 0xffffffc0
sub ecx, dword [esp + 0x28]
and ecx, 0x7f
sub ecx, 0x40
jmp 0x5143bd
shr ecx, 1
sub ecx, 0x40
and ecx, 0x7f
sub ecx, 0x40
jmp 0x5143bd
test cl, 0x80
mov eax, 0x40
mov ecx, 0xffffffc0
cmovne ecx, eax
jmp 0x5143bd
movzx eax, cl
movsx ecx, byte [eax + 0x570c30]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x514423
test ecx, ecx
jns 0x5143e7
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x570db0]
mov eax, dword [eax*4 + 0x570db4]
jmp 0x5143fa
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.00514f70
mov ebx, eax
add esp, 0xc
movzx ecx, bl
sar ebx, 8
jmp 0x51442c
sar ecx, 6
add ebx, ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebp + 0xe920]
cmp ebx, dword [ebp + 0xe974]
jg 0x514451
test al, 2
je 0x51444b
mov dword [esi + 0x20], 0
mov eax, dword [ebp + 0xe920]
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x514482
test al, 0x20
jne 0x514465
cmp ebx, 0x100000
jl 0x51447a
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.00513370
test byte [ebp + 0xe920], 0x20
je 0x5144b6
cmp eax, 0x100
jae 0x5144b6
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0xd91ffc]
push 0x10000
push eax
call fcn.00514f70
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 0x5144f2
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 0x5147e8
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x5146a6
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 0x5145e9
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 0x5145e9
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 0x5145e9
movzx eax, al
mov dword [esp + 0x14], ecx
cmp byte [eax + edx + 0xcc], 0
jne 0x5145e9
test byte [ebp + 0xe920], 4
je 0x5145cf
movzx eax, byte [edx + 0x22c]
mov dword [esp + 0x14], ecx
movzx ecx, byte [esp + 0x13]
inc ecx
cmp ecx, eax
jne 0x5145e9
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 0x5145ed
mov edi, dword [esp + 0x14]
mov ecx, ebx
and ecx, 0x200
test byte [edx + 4], 2
je 0x514629
test ecx, ecx
jne 0x514629
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp edi, eax
jne 0x514622
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
mov edi, ebx
jmp 0x5146a6
movzx eax, byte [edx + 0x22c]
mov edi, ebx
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esp + 0x14], eax
jbe 0x5146a6
test byte [ebp + 0xe920], 0x20
jne 0x51464a
test ecx, ecx
je 0x514653
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 0x5146a6
mov eax, dword [esp + 0x18]
cmp eax, dword [ebp + 0xe910]
jae 0x51468d
test byte [ebp + 0xe920], 0x20
je 0x5146a6
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 0x51474a
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 0x5146fa
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 0x5146fa
movzx eax, byte [edx + 0x233]
movzx ebx, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], ebx
test byte [edx + 4], 0x10
je 0x51472d
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp ebx, eax
jne 0x51472d
test edi, 0x200
jne 0x51472d
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
jmp 0x51474a
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 0x5147e8
mov ebx, dword [esi + 0x9c]
inc ebx
mov dword [esi + 0x9c], ebx
mov ecx, ebx
test dword [edx + 4], 0x100
je 0x514798
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp ebx, eax
jb 0x514798
movzx eax, byte [edx + 0x237]
movzx ecx, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], ecx
test byte [edx + 4], 0x80
je 0x5147cb
test edi, 0x200
jne 0x5147cb
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp ecx, eax
jne 0x5147e6
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x5147e0
movzx eax, byte [edx + 0x22e]
mov ebx, edi
movzx eax, word [edx + eax*2 + 0x8a]
cmp ecx, eax
jbe 0x5147e8
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 0x514806
cmp dword [esi + 0x14], edx
jne 0x514806
cmp dword [esi + 0x10], edx
je 0x51480f
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 0x514828
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 0x514b1b
cmp dword [esi + 0x20], 0
je 0x514b1b
test edi, edi
je 0x514b1b
mov dword [esi], eax
cmp dword [0xd92004], 2
jb 0x5148fa
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0xd91ff0]
mov eax, eax
test eax, eax
jns 0x514878
add eax, 0x7f
sar eax, 7
mov ecx, dword [0xd94ec4]
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 0x5148e3
mov eax, edx
shl eax, 7
sar eax, 8
cmp edi, 0x80
jge 0x5148d4
imul edi, edx
mov ebx, eax
sar edi, 8
mov dword [esi + 0x68], edi
jmp 0x514909
sub ebx, edi
mov edi, eax
imul ebx, edx
mov dword [esi + 0x68], edi
sar ebx, 8
jmp 0x514909
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 0x514909
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 0x514920
mov dword [esi + 0x64], 0xffff
mov ebx, 0xffff
cmp edi, 0xffff
jle 0x514934
mov dword [esi + 0x68], 0xffff
mov edi, 0xffff
test byte [0xd94ec4], 8
mov ecx, dword [esi + 0x24]
jne 0x514972
mov edx, dword [esi + 0xc]
and ecx, 0xffffcfff
mov dword [esi + 0x24], ecx
mov eax, ecx
cmp edx, 0x10000
je 0x514972
test dword [0xd94ec4], 0x410
mov dword [esp + 0x20], ecx
jne 0x51497f
mov dword [esp + 0x20], ecx
cmp edx, 0xff00
jl 0x51497f
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 0x5149bd
cmp dword [0xd92004], 2
mov dword [esp + 0x2c], edx
ja 0x5149bd
neg edx
mov dword [esp + 0x2c], edx
mov dword [esi + 0x68], edx
test cl, cl
jns 0x5149c9
mov eax, dword [esi + 0xc]
neg eax
mov dword [esi + 0xc], eax
test ecx, 0x8000
je 0x514ad0
mov eax, dword [esi + 0x14]
cmp dword [esi + 0x10], ebx
jne 0x5149e5
cmp eax, edx
je 0x514ad0
mov ebp, dword [esi + 0x10]
mov edi, dword [0xd9200c]
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 [0xd94ec4], 0x10000
mov dword [esp + 0x28], edi
jne 0x514a37
test byte [0xd94ec0], 9
je 0x514a69
test byte [0xd94ec4], 0x10
je 0x514a69
cmp dword [0xd94ecc], 0x14
ja 0x514a69
or eax, dword [esi + 0x10]
je 0x514a69
mov eax, ebx
or eax, edx
je 0x514a69
test ecx, 0x1000000
jne 0x514a69
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 0x514ac2
mov eax, dword [esp + 0x28]
mov dword [esi + 0x5c], eax
mov eax, dword [esp + 0x1c]
jmp 0x514ae3
mov eax, dword [esp + 0x20]
and eax, 0xffff7fff
mov dword [esi + 0x24], eax
jmp 0x514ad9
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 0x514b77
mov eax, ecx
mov ebx, 0x100
jmp 0x514b61
cmp dword [esi + 0xa4], 0xff
mov dword [esi], 0
jbe 0x514b37
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 0x514b61
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x18], eax
cmp eax, 0x80
jb 0x5139e0
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0xd91ff4]
jb 0x514c1e
test dword [0xd94ec4], 0x10000
jne 0x514c1e
test eax, eax
je 0x514c1e
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 0x514c0c
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 0x514bfc
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 0x514bc2
jmp 0x514c00
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 0x514bb4
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x514c72
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x514c4c
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 0x514c68
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