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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x3c]
mov edx, 1
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x7c]
mov ebp, dword [edi + 0x68]
mov esi, dword [edi]
mov ebx, dword [edi + 4]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x78]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], ebp
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x40]
shl edx, cl
add eax, 0xc
mov ecx, edx
mov dword [esp + 0x14], eax
mov eax, dword [edi + 8]
sar ecx, 1
or ecx, edx
mov edx, dword [edi + 0x80]
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov dword [esp + 0x2c], ecx
test edx, 0xfffffffc
jbe 0x52ff3f
mov ecx, dword [esp + 0x20]
lea edx, [ecx + ecx*2]
shl edx, 2
xor ebp, ebp
mov dword [esp + 0x30], edx
jmp 0x52e3d4
mov ecx, dword [esp + 0x20]
test ecx, ecx
mov dword [esp + 0x34], 0
mov ecx, dword [esp + 0x14]
je 0x52ff0a
mov ebp, dword [ecx]
mov dword [esp + 0x40], ebp
test ebp, ebp
jne 0x52f28d
mov edx, dword [edi + 0x60]
lea ecx, [edi + 0x60]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52e488
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52e41d
mov ecx, dword [edx + 8]
jmp 0x52e42d
xor ecx, ecx
cmp dword [esp + 0x24], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52e476
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e469
cmp ecx, 0x8f
jbe 0x52e45f
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e474
mov eax, 7
shl ecx, 9
jmp 0x52e471
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e435
jmp 0x52e50e
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52e512
cmp ebx, ebp
jae 0x52e4b1
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e4b8
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop
test eax, eax
jne 0x52e501
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e4f4
cmp ecx, 0x8f
jbe 0x52e4ea
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e4ff
mov eax, 7
shl ecx, 9
jmp 0x52e4fc
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e4c0
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x52fedb
mov edx, dword [edi + 0x64]
lea ecx, [edi + 0x64]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52e5b3
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52e545
mov ecx, dword [edx + 8]
jmp 0x52e555
xor ecx, ecx
cmp dword [esp + 0x24], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52e5a1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e594
cmp ecx, 0x8f
jbe 0x52e58a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e59f
mov eax, 7
shl ecx, 9
jmp 0x52e59c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e560
jmp 0x52e644
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52e640
cmp ebx, ebp
jae 0x52e5dc
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e5e3
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52e631
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e624
cmp ecx, 0x8f
jbe 0x52e61a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e62f
mov eax, 7
shl ecx, 9
jmp 0x52e62c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e5f0
jmp 0x52e644
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52e6d3
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52e667
mov ecx, dword [edx + 8]
jmp 0x52e677
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop
test eax, eax
jne 0x52e6c1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e6b4
cmp ecx, 0x8f
jbe 0x52e6aa
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e6bf
mov eax, 7
shl ecx, 9
jmp 0x52e6bc
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e680
jmp 0x52e764
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52e760
cmp ebx, ebp
jae 0x52e6fc
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e703
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52e751
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e744
cmp ecx, 0x8f
jbe 0x52e73a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e74f
mov eax, 7
shl ecx, 9
jmp 0x52e74c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e710
jmp 0x52e764
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
add ecx, ecx
or ecx, dword [esp + 0x28]
cmp ecx, 3
ja case.default.0x52e777
jmp dword [ecx*4 + 0x52ffd8]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x80000
and edx, 0x20000
or edx, ecx
shr edx, 0x11
mov dword [esp + 0x28], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52e83f
cmp ebx, ebp
jae 0x52e7d1
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x52e7e0
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x40]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52e829
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e81c
cmp ecx, 0x8f
jbe 0x52e812
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e827
mov eax, 7
shl ecx, 9
jmp 0x52e824
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e7e8
mov edx, dword [esp + 0x24]
jmp 0x52e8ca
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52e8c7
cmp ebx, ebp
jae 0x52e863
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e86d
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x40]
mov dword [edx], ecx
test eax, eax
jne 0x52e8b4
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e8a7
cmp ecx, 0x8f
jbe 0x52e89d
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e8b2
mov eax, 7
shl ecx, 9
jmp 0x52e8af
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e873
mov edx, dword [esp + 0x24]
jmp 0x52e8ca
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x24], edx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp], ecx
mov ebp, edx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x14]
shl ebp, 0x13
or ebp, 0x10
or dword [ecx - 4], 0x20
or dword [ecx + 4], 8
mov ecx, dword [edi + 0x7c]
mov dword [esp + 0x40], ebp
lea ecx, [ecx*4 + 8]
sub edx, ecx
mov ecx, dword [esp + 0x24]
shl ecx, 0x1f
or ecx, 0x10000
or dword [edx], ecx
or dword [edx - 4], 0x20000
or dword [edx + 4], 0x8000
mov edx, ebp
mov ecx, dword [edi + 0x6c]
shr edx, 3
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x24], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52e9db
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52e970
mov ecx, dword [edx + 8]
jmp 0x52e980
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x24]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52e9c9
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e9bc
cmp ecx, 0x8f
jbe 0x52e9b2
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e9c7
mov eax, 7
shl ecx, 9
jmp 0x52e9c4
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52e988
jmp 0x52ea5f
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52ea63
cmp ebx, ebp
jae 0x52ea04
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ea0b
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52ea52
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ea45
cmp ecx, 0x8f
jbe 0x52ea3b
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ea50
mov eax, 7
shl ecx, 9
jmp 0x52ea4d
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52ea11
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x52ec38
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x400000
and edx, 0x100000
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x80000
shr edx, 4
or edx, ecx
and ebp, 0x550
shr edx, 0xc
or edx, ebp
shr edx, 3
mov dword [esp + 0x10], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x24], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52eb59
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52eaea
mov ecx, dword [edx + 8]
jmp 0x52eafa
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x24]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52eb43
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52eb36
cmp ecx, 0x8f
jbe 0x52eb2c
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52eb41
mov eax, 7
shl ecx, 9
jmp 0x52eb3e
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52eb02
mov edx, dword [esp + 0x28]
jmp 0x52ebea
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52ebe7
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52eb86
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52eb8d
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52ebd4
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ebc7
cmp ecx, 0x8f
jbe 0x52ebbd
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ebd2
mov eax, 7
shl ecx, 9
jmp 0x52ebcf
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52eb93
mov edx, dword [esp + 0x28]
jmp 0x52ebea
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp + edi*4], ecx
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
shl edx, 0x16
or dword [ebp - 4], 0x100
or edx, 0x80
or ecx, edx
or dword [ebp + 4], 0x40
mov dword [esp + 0x40], ecx
jmp 0x52ec3c
mov ecx, dword [esp + 0x40]
mov edx, ecx
mov ecx, dword [edi + 0x6c]
shr edx, 6
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x24], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52ece7
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52ec7c
mov ecx, dword [edx + 8]
jmp 0x52ec8c
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x24]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52ecd5
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ecc8
cmp ecx, 0x8f
jbe 0x52ecbe
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ecd3
mov eax, 7
shl ecx, 9
jmp 0x52ecd0
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52ec94
jmp 0x52ed6f
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52ed73
cmp ebx, ebp
jae 0x52ed14
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ed1b
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52ed62
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ed55
cmp ecx, 0x8f
jbe 0x52ed4b
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ed60
mov eax, 7
shl ecx, 9
jmp 0x52ed5d
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52ed21
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x52ef4b
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x2000000
and edx, 0x800000
or edx, ecx
mov ecx, ebp
and ecx, 0x10000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 4
or edx, ecx
and ebp, 0x2a80
shr edx, 0xc
or edx, ebp
shr edx, 6
mov dword [esp + 0x10], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x24], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52ee69
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52edfa
mov ecx, dword [edx + 8]
jmp 0x52ee0a
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x24]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52ee53
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ee46
cmp ecx, 0x8f
jbe 0x52ee3c
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ee51
mov eax, 7
shl ecx, 9
jmp 0x52ee4e
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52ee12
mov edx, dword [esp + 0x28]
jmp 0x52eefa
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52eef7
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52ee96
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ee9d
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52eee4
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52eed7
cmp ecx, 0x8f
jbe 0x52eecd
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52eee2
mov eax, 7
shl ecx, 9
jmp 0x52eedf
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52eea3
mov edx, dword [esp + 0x28]
jmp 0x52eefa
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp + edi*8], ecx
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
shl edx, 0x19
or dword [ebp - 4], 0x800
or edx, 0x400
or ecx, edx
or dword [ebp + 4], 0x200
mov dword [esp + 0x40], ecx
jmp 0x52ef4f
mov ecx, dword [esp + 0x40]
mov edx, ecx
mov ecx, dword [edi + 0x6c]
shr edx, 9
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52effa
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52ef8f
mov ecx, dword [edx + 8]
jmp 0x52ef9f
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52efe8
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52efdb
cmp ecx, 0x8f
jbe 0x52efd1
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52efe6
mov eax, 7
shl ecx, 9
jmp 0x52efe3
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52efa7
jmp 0x52f082
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f086
cmp ebx, ebp
jae 0x52f027
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f02e
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f075
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f068
cmp ecx, 0x8f
jbe 0x52f05e
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f073
mov eax, 7
shl ecx, 9
jmp 0x52f070
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f034
mov ecx, dword [esp + 0x28]
test ecx, ecx
je case.default.0x52e777
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x10000000
and edx, 0x4000000
or edx, ecx
mov ecx, ebp
and ecx, 0x81ffffff
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 4
or edx, ecx
and ebp, 0x15400
shr edx, 0xc
or edx, ebp
shr edx, 9
mov dword [esp + 0x24], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f17c
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f10d
mov ecx, dword [edx + 8]
jmp 0x52f11d
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52f166
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f159
cmp ecx, 0x8f
jbe 0x52f14f
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f164
mov eax, 7
shl ecx, 9
jmp 0x52f161
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f125
mov edx, dword [esp + 0x28]
jmp 0x52f20d
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f20a
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f1a9
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f1b0
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f1f7
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f1ea
cmp ecx, 0x8f
jbe 0x52f1e0
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f1f5
mov eax, 7
shl ecx, 9
jmp 0x52f1f2
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f1b6
mov edx, dword [esp + 0x28]
jmp 0x52f20d
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x30]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [edi + ebp], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
or dword [ecx - 4], 0x4000
mov ecx, edx
shl ecx, 0x1c
or ecx, 0x2000
shl edx, 0x12
or ebp, ecx
or edx, 2
mov ecx, dword [esp + 0x14]
or dword [ecx + 4], 0x1000
mov ecx, dword [edi + 0x7c]
mov edi, dword [esp + 0x14]
or dword [edi + ecx*4 + 8], edx
mov edx, edi
mov edi, dword [esp + 0x3c]
or dword [edx + ecx*4 + 4], 4
or dword [edx + ecx*4 + 0xc], 1
mov ecx, edx
and ebp, 0xb6dfffff
mov dword [ecx], ebp
jmp 0x52fedf
test ebp, 0x200010
jne 0x52f5c8
mov ecx, dword [edi + 0x6c]
mov edx, ebp
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f343
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f2d6
mov ecx, dword [edx + 8]
jmp 0x52f2e6
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop
test eax, eax
jne 0x52f331
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f324
cmp ecx, 0x8f
jbe 0x52f31a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f32f
mov eax, 7
shl ecx, 9
jmp 0x52f32c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f2f0
jmp 0x52f3ce
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f3d2
cmp ebx, ebp
jae 0x52f370
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f377
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov ebp, dword [esp + 0x10]
mov dword [ebp], ecx
nop
test eax, eax
jne 0x52f3c1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f3b4
cmp ecx, 0x8f
jbe 0x52f3aa
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f3bf
mov eax, 7
shl ecx, 9
jmp 0x52f3bc
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f380
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52f5c8
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x80000
and edx, 0x20000
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x40000
shr edx, 2
or edx, ecx
and ebp, 0xaa
shr edx, 0xe
or edx, ebp
mov dword [esp + 0x28], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f4c7
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52f456
mov ecx, dword [edx + 8]
jmp 0x52f466
xor ecx, ecx
cmp dword [esp + 0x24], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop
test eax, eax
jne 0x52f4b1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f4a4
cmp ecx, 0x8f
jbe 0x52f49a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f4af
mov eax, 7
shl ecx, 9
jmp 0x52f4ac
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f470
mov edx, dword [esp + 0x24]
jmp 0x52f558
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f555
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f4f4
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f4fb
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f542
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f535
cmp ecx, 0x8f
jbe 0x52f52b
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f540
mov eax, 7
shl ecx, 9
jmp 0x52f53d
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f501
mov edx, dword [esp + 0x24]
jmp 0x52f558
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x24], edx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
or dword [ecx - 4], 0x20
mov ecx, edx
mov edx, dword [esp + 0x14]
shl ecx, 0x13
or ecx, 0x10
or ebp, ecx
or dword [edx + 4], 8
mov ecx, dword [edi + 0x7c]
mov dword [esp + 0x40], ebp
lea ecx, [ecx*4 + 8]
sub edx, ecx
mov ecx, dword [esp + 0x24]
shl ecx, 0x1f
or ecx, 0x10000
or dword [edx], ecx
or dword [edx - 4], 0x20000
or dword [edx + 4], 0x8000
test ebp, 0x1000080
jne 0x52f8e3
mov ecx, dword [edi + 0x6c]
mov edx, ebp
shr edx, 3
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f683
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f614
mov ecx, dword [edx + 8]
jmp 0x52f624
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52f671
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f664
cmp ecx, 0x8f
jbe 0x52f65a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f66f
mov eax, 7
shl ecx, 9
jmp 0x52f66c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f630
jmp 0x52f70e
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f712
cmp ebx, ebp
jae 0x52f6b0
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f6b7
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52f701
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f6f4
cmp ecx, 0x8f
jbe 0x52f6ea
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f6ff
mov eax, 7
shl ecx, 9
jmp 0x52f6fc
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f6c0
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52f8e3
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x400000
and edx, 0x100000
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x80000
shr edx, 4
or edx, ecx
and ebp, 0x550
shr edx, 0xc
or edx, ebp
shr edx, 3
mov dword [esp + 0x24], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f808
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f799
mov ecx, dword [edx + 8]
jmp 0x52f7a9
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52f7f2
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f7e5
cmp ecx, 0x8f
jbe 0x52f7db
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f7f0
mov eax, 7
shl ecx, 9
jmp 0x52f7ed
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f7b1
mov edx, dword [esp + 0x28]
jmp 0x52f897
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f894
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f833
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f83a
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f881
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f874
cmp ecx, 0x8f
jbe 0x52f86a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f87f
mov eax, 7
shl ecx, 9
jmp 0x52f87c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f840
mov edx, dword [esp + 0x28]
jmp 0x52f897
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp + edi*4], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
shl edx, 0x16
or dword [ecx - 4], 0x100
or edx, 0x80
or ebp, edx
or dword [ecx + 4], 0x40
mov dword [esp + 0x40], ebp
test ebp, 0x8000400
jne 0x52fbfa
mov ecx, dword [edi + 0x6c]
mov edx, ebp
shr edx, 6
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52f99a
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f92f
mov ecx, dword [edx + 8]
jmp 0x52f93f
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52f988
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f97b
cmp ecx, 0x8f
jbe 0x52f971
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f986
mov eax, 7
shl ecx, 9
jmp 0x52f983
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f947
jmp 0x52fa22
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52fa26
cmp ebx, ebp
jae 0x52f9c7
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f9ce
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52fa15
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fa08
cmp ecx, 0x8f
jbe 0x52f9fe
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fa13
mov eax, 7
shl ecx, 9
jmp 0x52fa10
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52f9d4
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52fbfa
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x2000000
and edx, 0x800000
or edx, ecx
mov ecx, ebp
and ecx, 0x10000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 4
or edx, ecx
and ebp, 0x2a80
shr edx, 0xc
or edx, ebp
shr edx, 6
mov dword [esp + 0x24], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52fb1c
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52faad
mov ecx, dword [edx + 8]
jmp 0x52fabd
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52fb06
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52faf9
cmp ecx, 0x8f
jbe 0x52faef
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fb04
mov eax, 7
shl ecx, 9
jmp 0x52fb01
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fac5
mov edx, dword [esp + 0x28]
jmp 0x52fbab
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52fba8
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52fb47
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fb4e
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52fb95
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fb88
cmp ecx, 0x8f
jbe 0x52fb7e
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fb93
mov eax, 7
shl ecx, 9
jmp 0x52fb90
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fb54
mov edx, dword [esp + 0x28]
jmp 0x52fbab
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601de8]
xor edx, ecx
mov ecx, dword [esp + 0x1c]
neg ecx
test edx, edx
cmove ecx, dword [esp + 0x1c]
mov dword [ebp + edi*8], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
shl edx, 0x19
or dword [ecx - 4], 0x800
or edx, 0x400
or ebp, edx
or dword [ecx + 4], 0x200
mov dword [esp + 0x40], ebp
test ebp, 0x40002000
jne 0x52fecd
mov ecx, dword [edi + 0x6c]
mov edx, ebp
shr edx, 9
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52fcb3
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fc46
mov ecx, dword [edx + 8]
jmp 0x52fc56
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
nop
test eax, eax
jne 0x52fca1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fc94
cmp ecx, 0x8f
jbe 0x52fc8a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fc9f
mov eax, 7
shl ecx, 9
jmp 0x52fc9c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fc60
jmp 0x52fd3e
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52fd42
cmp ebx, ebp
jae 0x52fce0
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fce7
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop dword [eax]
test eax, eax
jne 0x52fd31
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fd24
cmp ecx, 0x8f
jbe 0x52fd1a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fd2f
mov eax, 7
shl ecx, 9
jmp 0x52fd2c
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fcf0
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52fecd
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x10000000
and edx, 0x4000000
or edx, ecx
mov ecx, ebp
and ecx, 0x81ffffff
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 4
or edx, ecx
and ebp, 0x15400
shr edx, 0xc
or edx, ebp
shr edx, 9
mov dword [esp + 0x24], edx
movzx ecx, byte [edx + 0x601ce8]
add ecx, 7
mov edx, dword [edi + ecx*4]
lea ecx, [edi + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x52fe38
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fdc9
mov ecx, dword [edx + 8]
jmp 0x52fdd9
xor ecx, ecx
cmp dword [esp + 0x28], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov ebx, ebp
mov dword [edx], ecx
test eax, eax
jne 0x52fe22
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fe15
cmp ecx, 0x8f
jbe 0x52fe0b
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fe20
mov eax, 7
shl ecx, 9
jmp 0x52fe1d
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fde1
mov edx, dword [esp + 0x28]
jmp 0x52f20d
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f20a
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52fe65
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fe6c
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52feb3
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fea6
cmp ecx, 0x8f
jbe 0x52fe9c
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52feb1
mov eax, 7
shl ecx, 9
jmp 0x52feae
shl ecx, 8
mov eax, 8
mov dword [edi + 0x10], edx
add esi, ecx
add ebx, ebx
add esi, esi
dec eax
cmp ebx, 0x8000
jb 0x52fe72
mov edx, dword [esp + 0x28]
jmp 0x52f20d
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
and ebp, 0xb6dfffff
mov dword [ecx], ebp
jmp 0x52fedf
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x34]
add ecx, 4
mov edx, dword [esp + 0x18]
inc ebp
add edx, 4
mov dword [esp + 0x34], ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebp, dword [esp + 0x20]
jb 0x52e3e8
mov ebp, dword [esp + 0x2c]
jmp 0x52ff0e
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x30]
add ecx, 8
mov dword [esp + 0x18], edx
add ebp, 4
mov edx, dword [edi + 0x80]
mov dword [esp + 0x14], ecx
mov ecx, edx
and ecx, 0xfffffffc
mov dword [esp + 0x2c], ebp
cmp ebp, ecx
jb 0x52e3d0
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov dword [edi + 0x68], ebp
mov dword [edi], esi
mov dword [edi + 4], ebx
mov dword [edi + 8], eax
cmp ecx, edx
jae 0x52ffce
mov ebp, dword [esp + 0x20]
test ebp, ebp
je 0x52ffce
mov ebx, dword [esp + 0x18]
mov ecx, ebp
mov edx, dword [esp + 0x14]
sub ebx, edx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x3c], ebp
mov eax, dword [edi + 0x80]
xor esi, esi
sub eax, dword [esp + 0x2c]
je 0x52ffb8
shl ebp, 2
add ebx, edx
push 0
push esi
push dword [esp + 0x24]
push ebx
push edx
push edi
call fcn.00531c40
mov eax, dword [edi + 0x80]
inc esi
sub eax, dword [esp + 0x44]
add esp, 0x18
mov edx, dword [esp + 0x14]
add ebx, ebp
cmp esi, eax
jb 0x52ff85
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x20]
and dword [edx], 0xb6dfffff
add edx, 4
sub ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x3c], ecx
jne 0x52ff72
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret