Function at 0x52e5f0
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 0x5301df
mov ecx, dword [esp + 0x20]
lea edx, [ecx + ecx*2]
shl edx, 2
xor ebp, ebp
mov dword [esp + 0x30], edx
jmp 0x52e674
mov ecx, dword [esp + 0x20]
test ecx, ecx
mov dword [esp + 0x34], 0
mov ecx, dword [esp + 0x14]
je 0x5301aa
mov ebp, dword [ecx]
mov dword [esp + 0x40], ebp
test ebp, ebp
jne 0x52f52d
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 0x52e728
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52e6bd
mov ecx, dword [edx + 8]
jmp 0x52e6cd
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 0x52e716
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e709
cmp ecx, 0x8f
jbe 0x52e6ff
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e714
mov eax, 7
shl ecx, 9
jmp 0x52e711
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 0x52e6d5
jmp 0x52e7ae
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52e7b2
cmp ebx, ebp
jae 0x52e751
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e758
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop
test eax, eax
jne 0x52e7a1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e794
cmp ecx, 0x8f
jbe 0x52e78a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e79f
mov eax, 7
shl ecx, 9
jmp 0x52e79c
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 0x52e760
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x53017b
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 0x52e853
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52e7e5
mov ecx, dword [edx + 8]
jmp 0x52e7f5
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 0x52e841
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e834
cmp ecx, 0x8f
jbe 0x52e82a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e83f
mov eax, 7
shl ecx, 9
jmp 0x52e83c
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 0x52e800
jmp 0x52e8e4
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52e8e0
cmp ebx, ebp
jae 0x52e87c
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e883
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 0x52e8d1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e8c4
cmp ecx, 0x8f
jbe 0x52e8ba
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e8cf
mov eax, 7
shl ecx, 9
jmp 0x52e8cc
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 0x52e890
jmp 0x52e8e4
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 0x52e973
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52e907
mov ecx, dword [edx + 8]
jmp 0x52e917
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 0x52e961
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e954
cmp ecx, 0x8f
jbe 0x52e94a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e95f
mov eax, 7
shl ecx, 9
jmp 0x52e95c
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 0x52e920
jmp 0x52ea04
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52ea00
cmp ebx, ebp
jae 0x52e99c
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52e9a3
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 0x52e9f1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52e9e4
cmp ecx, 0x8f
jbe 0x52e9da
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52e9ef
mov eax, 7
shl ecx, 9
jmp 0x52e9ec
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 0x52e9b0
jmp 0x52ea04
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
add ecx, ecx
or ecx, dword [esp + 0x28]
cmp ecx, 3
ja case.default.0x52ea17
jmp dword [ecx*4 + 0x530278]
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 + 0x601cd8]
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 0x52eadf
cmp ebx, ebp
jae 0x52ea71
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x52ea80
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 0x52eac9
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52eabc
cmp ecx, 0x8f
jbe 0x52eab2
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52eac7
mov eax, 7
shl ecx, 9
jmp 0x52eac4
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 0x52ea88
mov edx, dword [esp + 0x24]
jmp 0x52eb6a
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52eb67
cmp ebx, ebp
jae 0x52eb03
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52eb0d
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 0x52eb54
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52eb47
cmp ecx, 0x8f
jbe 0x52eb3d
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52eb52
mov eax, 7
shl ecx, 9
jmp 0x52eb4f
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 0x52eb13
mov edx, dword [esp + 0x24]
jmp 0x52eb6a
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x601dd8]
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 0x52ec7b
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52ec10
mov ecx, dword [edx + 8]
jmp 0x52ec20
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 0x52ec69
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ec5c
cmp ecx, 0x8f
jbe 0x52ec52
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ec67
mov eax, 7
shl ecx, 9
jmp 0x52ec64
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 0x52ec28
jmp 0x52ecff
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52ed03
cmp ebx, ebp
jae 0x52eca4
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ecab
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52ecf2
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ece5
cmp ecx, 0x8f
jbe 0x52ecdb
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ecf0
mov eax, 7
shl ecx, 9
jmp 0x52eced
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 0x52ecb1
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x52eed8
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 + 0x601cd8]
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 0x52edf9
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52ed8a
mov ecx, dword [edx + 8]
jmp 0x52ed9a
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 0x52ede3
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52edd6
cmp ecx, 0x8f
jbe 0x52edcc
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ede1
mov eax, 7
shl ecx, 9
jmp 0x52edde
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 0x52eda2
mov edx, dword [esp + 0x28]
jmp 0x52ee8a
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52ee87
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52ee26
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ee2d
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52ee74
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ee67
cmp ecx, 0x8f
jbe 0x52ee5d
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ee72
mov eax, 7
shl ecx, 9
jmp 0x52ee6f
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 0x52ee33
mov edx, dword [esp + 0x28]
jmp 0x52ee8a
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601dd8]
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 0x52eedc
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 0x52ef87
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52ef1c
mov ecx, dword [edx + 8]
jmp 0x52ef2c
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 0x52ef75
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ef68
cmp ecx, 0x8f
jbe 0x52ef5e
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ef73
mov eax, 7
shl ecx, 9
jmp 0x52ef70
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 0x52ef34
jmp 0x52f00f
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f013
cmp ebx, ebp
jae 0x52efb4
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52efbb
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52f002
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52eff5
cmp ecx, 0x8f
jbe 0x52efeb
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f000
mov eax, 7
shl ecx, 9
jmp 0x52effd
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 0x52efc1
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x52f1eb
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 + 0x601cd8]
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 0x52f109
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f09a
mov ecx, dword [edx + 8]
jmp 0x52f0aa
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 0x52f0f3
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f0e6
cmp ecx, 0x8f
jbe 0x52f0dc
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f0f1
mov eax, 7
shl ecx, 9
jmp 0x52f0ee
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 0x52f0b2
mov edx, dword [esp + 0x28]
jmp 0x52f19a
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f197
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f136
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f13d
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x24]
mov dword [edx], ecx
test eax, eax
jne 0x52f184
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f177
cmp ecx, 0x8f
jbe 0x52f16d
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f182
mov eax, 7
shl ecx, 9
jmp 0x52f17f
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 0x52f143
mov edx, dword [esp + 0x28]
jmp 0x52f19a
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601dd8]
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 0x52f1ef
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 0x52f29a
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f22f
mov ecx, dword [edx + 8]
jmp 0x52f23f
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 0x52f288
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f27b
cmp ecx, 0x8f
jbe 0x52f271
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f286
mov eax, 7
shl ecx, 9
jmp 0x52f283
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 0x52f247
jmp 0x52f322
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f326
cmp ebx, ebp
jae 0x52f2c7
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f2ce
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f315
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f308
cmp ecx, 0x8f
jbe 0x52f2fe
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f313
mov eax, 7
shl ecx, 9
jmp 0x52f310
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 0x52f2d4
mov ecx, dword [esp + 0x28]
test ecx, ecx
je case.default.0x52ea17
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 + 0x601cd8]
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 0x52f41c
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f3ad
mov ecx, dword [edx + 8]
jmp 0x52f3bd
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 0x52f406
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f3f9
cmp ecx, 0x8f
jbe 0x52f3ef
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f404
mov eax, 7
shl ecx, 9
jmp 0x52f401
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 0x52f3c5
mov edx, dword [esp + 0x28]
jmp 0x52f4ad
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f4aa
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f449
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f450
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f497
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f48a
cmp ecx, 0x8f
jbe 0x52f480
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f495
mov eax, 7
shl ecx, 9
jmp 0x52f492
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 0x52f456
mov edx, dword [esp + 0x28]
jmp 0x52f4ad
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x30]
movzx ecx, byte [ecx + 0x601dd8]
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 0x53017f
test ebp, 0x200010
jne 0x52f868
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 0x52f5e3
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f576
mov ecx, dword [edx + 8]
jmp 0x52f586
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 0x52f5d1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f5c4
cmp ecx, 0x8f
jbe 0x52f5ba
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f5cf
mov eax, 7
shl ecx, 9
jmp 0x52f5cc
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 0x52f590
jmp 0x52f66e
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f672
cmp ebx, ebp
jae 0x52f610
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f617
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov ebp, dword [esp + 0x10]
mov dword [ebp], ecx
nop
test eax, eax
jne 0x52f661
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f654
cmp ecx, 0x8f
jbe 0x52f64a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f65f
mov eax, 7
shl ecx, 9
jmp 0x52f65c
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 0x52f620
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52f868
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 + 0x601cd8]
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 0x52f767
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
cmp ebx, ebp
jae 0x52f6f6
mov ecx, dword [edx + 8]
jmp 0x52f706
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 0x52f751
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f744
cmp ecx, 0x8f
jbe 0x52f73a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f74f
mov eax, 7
shl ecx, 9
jmp 0x52f74c
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 0x52f710
mov edx, dword [esp + 0x24]
jmp 0x52f7f8
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f7f5
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52f794
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f79b
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52f7e2
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f7d5
cmp ecx, 0x8f
jbe 0x52f7cb
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f7e0
mov eax, 7
shl ecx, 9
jmp 0x52f7dd
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 0x52f7a1
mov edx, dword [esp + 0x24]
jmp 0x52f7f8
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x601dd8]
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 0x52fb83
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 0x52f923
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52f8b4
mov ecx, dword [edx + 8]
jmp 0x52f8c4
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 0x52f911
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f904
cmp ecx, 0x8f
jbe 0x52f8fa
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f90f
mov eax, 7
shl ecx, 9
jmp 0x52f90c
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 0x52f8d0
jmp 0x52f9ae
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52f9b2
cmp ebx, ebp
jae 0x52f950
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52f957
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 0x52f9a1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52f994
cmp ecx, 0x8f
jbe 0x52f98a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52f99f
mov eax, 7
shl ecx, 9
jmp 0x52f99c
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 0x52f960
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52fb83
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 + 0x601cd8]
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 0x52faa8
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fa39
mov ecx, dword [edx + 8]
jmp 0x52fa49
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 0x52fa92
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fa85
cmp ecx, 0x8f
jbe 0x52fa7b
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fa90
mov eax, 7
shl ecx, 9
jmp 0x52fa8d
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 0x52fa51
mov edx, dword [esp + 0x28]
jmp 0x52fb37
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52fb34
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52fad3
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fada
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52fb21
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fb14
cmp ecx, 0x8f
jbe 0x52fb0a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fb1f
mov eax, 7
shl ecx, 9
jmp 0x52fb1c
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 0x52fae0
mov edx, dword [esp + 0x28]
jmp 0x52fb37
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601dd8]
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 0x52fe9a
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 0x52fc3a
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fbcf
mov ecx, dword [edx + 8]
jmp 0x52fbdf
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 0x52fc28
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fc1b
cmp ecx, 0x8f
jbe 0x52fc11
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fc26
mov eax, 7
shl ecx, 9
jmp 0x52fc23
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 0x52fbe7
jmp 0x52fcc2
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52fcc6
cmp ebx, ebp
jae 0x52fc67
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fc6e
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52fcb5
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fca8
cmp ecx, 0x8f
jbe 0x52fc9e
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fcb3
mov eax, 7
shl ecx, 9
jmp 0x52fcb0
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 0x52fc74
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x52fe9a
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 + 0x601cd8]
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 0x52fdbc
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fd4d
mov ecx, dword [edx + 8]
jmp 0x52fd5d
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 0x52fda6
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fd99
cmp ecx, 0x8f
jbe 0x52fd8f
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fda4
mov eax, 7
shl ecx, 9
jmp 0x52fda1
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 0x52fd65
mov edx, dword [esp + 0x28]
jmp 0x52fe4b
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52fe48
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x52fde7
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52fdee
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x52fe35
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52fe28
cmp ecx, 0x8f
jbe 0x52fe1e
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52fe33
mov eax, 7
shl ecx, 9
jmp 0x52fe30
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 0x52fdf4
mov edx, dword [esp + 0x28]
jmp 0x52fe4b
mov edx, dword [edx + 4]
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
movzx ecx, byte [ecx + 0x601dd8]
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 0x53016d
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 0x52ff53
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x52fee6
mov ecx, dword [edx + 8]
jmp 0x52fef6
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 0x52ff41
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ff34
cmp ecx, 0x8f
jbe 0x52ff2a
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ff3f
mov eax, 7
shl ecx, 9
jmp 0x52ff3c
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 0x52ff00
jmp 0x52ffde
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
mov ecx, dword [edx + 4]
test ebx, 0x8000
jne 0x52ffe2
cmp ebx, ebp
jae 0x52ff80
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x52ff87
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 0x52ffd1
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x52ffc4
cmp ecx, 0x8f
jbe 0x52ffba
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x52ffcf
mov eax, 7
shl ecx, 9
jmp 0x52ffcc
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 0x52ff90
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
test ecx, ecx
je 0x53016d
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 + 0x601cd8]
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 0x5300d8
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
cmp ebx, ebp
jae 0x530069
mov ecx, dword [edx + 8]
jmp 0x530079
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 0x5300c2
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x5300b5
cmp ecx, 0x8f
jbe 0x5300ab
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x5300c0
mov eax, 7
shl ecx, 9
jmp 0x5300bd
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 0x530081
mov edx, dword [esp + 0x28]
jmp 0x52f4ad
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x52f4aa
mov ecx, dword [edx + 4]
cmp ebx, ebp
jae 0x530105
test ecx, ecx
mov ecx, 0
sete cl
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
jmp 0x53010c
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test eax, eax
jne 0x530153
mov eax, dword [edi + 0x10]
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp byte [eax], 0xff
jne 0x530146
cmp ecx, 0x8f
jbe 0x53013c
inc dword [edi + 0xc]
mov eax, 8
mov ecx, 0xff00
jmp 0x530151
mov eax, 7
shl ecx, 9
jmp 0x53014e
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 0x530112
mov edx, dword [esp + 0x28]
jmp 0x52f4ad
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
and ebp, 0xb6dfffff
mov dword [ecx], ebp
jmp 0x53017f
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 0x52e688
mov ebp, dword [esp + 0x2c]
jmp 0x5301ae
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 0x52e670
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 0x53026e
mov ebp, dword [esp + 0x20]
test ebp, ebp
je 0x53026e
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 0x530258
shl ebp, 2
add ebx, edx
push 0
push esi
push dword [esp + 0x24]
push ebx
push edx
push edi
call fcn.00531ee0
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 0x530225
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 0x530212
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret