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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx + 0x120]
test edx, edx
je 0x52a233
mov eax, 0x4040
and eax, dword [ecx + 0x74]
cmp eax, 0x4000
je 0x52a23e
mov edi, dword [esp + 0x70]
mov eax, dword [ecx + 0x78]
test eax, 0x1000
je 0x526fc2
cmp byte [edi + 8], 3
jne 0x526c64
lea ebp, [edx + 1]
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x138]
mov esi, dword [eax + 0x1ac]
mov dword [esp + 0xc], esi
movzx eax, word [eax + 0x144]
mov word [esp + 4], ax
mov ebx, dword [edi]
mov al, byte [edi + 9]
cmp al, 7
ja 0x526c92
cmp al, 4
mov dword [esp + 0x10], ebp
mov dword [esp + 0x20], ecx
je 0x526d33
cmp al, 2
je 0x526dce
cmp al, 1
jne 0x526ead
test ebx, ebx
je 0x526ead
mov edi, ebx
neg edi
and edi, 7
mov ecx, dword [esp + 0x10]
lea ebp, [ecx + ebx]
lea eax, [ebx - 1]
mov esi, eax
shr esi, 3
add esi, ecx
mov ecx, esi
test eax, eax
je 0x526e6b
mov eax, ebx
and eax, 0xfffffffe
mov esi, ecx
nop dword [eax]
mov dword [esp], ecx
mov dword [esp + 8], eax
movzx eax, byte [ecx]
bt eax, edi
setb byte [ebp - 1]
xor ecx, ecx
cmp edi, 7
lea eax, [edi + 1]
sete cl
mov edi, 0
cmove eax, edi
sub esi, ecx
neg ecx
mov edi, dword [esp]
movzx ecx, byte [edi + ecx]
lea edi, [ebp - 2]
mov dword [esp], edi
bt ecx, eax
setb byte [ebp - 2]
lea edi, [eax + 1]
xor ecx, ecx
cmp eax, 7
mov eax, dword [esp + 8]
sete cl
mov ebp, 0
cmove edi, ebp
sub esi, ecx
mov ebp, dword [esp]
mov ecx, esi
add eax, 0xfffffffe
jne 0x526c00
jmp 0x526e70
add edx, 1
mov ecx, dword [esp + 0x6c]
cmp word [ecx + 0x144], 0
je 0x526d0e
and eax, 0x2000000
je 0x526d0e
lea eax, [ecx + 0x1b0]
mov ecx, edi
push eax
jmp 0x526d12
cmp al, 8
jne 0x526fc2
cmp word [esp + 4], 0
je 0x526ed0
mov al, 4
mov ah, 6
test ebx, ebx
je 0x526d2a
lea eax, [ebx*4]
mov dword [esp], eax
mov ebp, dword [esp + 0xc]
jmp 0x526cf7
mov byte [edx + ebx*4], al
movzx eax, byte [edx + ebx]
lea eax, [eax + eax*2]
movzx eax, byte [ecx + eax + 2]
mov byte [edx + ebx*4 - 1], al
movzx eax, byte [edx + ebx]
lea eax, [eax + eax*2]
movzx eax, byte [ecx + eax + 1]
mov byte [edx + ebx*4 - 2], al
movzx eax, byte [edx + ebx]
lea eax, [eax + eax*2]
movzx eax, byte [ecx + eax]
mov byte [edx + ebx*4 - 3], al
add ebx, 0xffffffff
je 0x526d1f
movzx esi, byte [edx + ebx]
mov al, 0xff
cmp word [esp + 4], si
jbe 0x526cc0
movzx eax, si
movzx eax, byte [ebp + eax]
jmp 0x526cc0
mov ecx, edi
push 0
call 0x52a270
add esp, 4
jmp 0x526fc2
mov al, 4
mov ah, 6
mov dl, 0x20
jmp 0x526faf
xor ecx, ecx
mov dl, 0x20
jmp 0x526fb2
test ebx, ebx
je 0x526ead
lea ecx, [ebx*4]
and ecx, 4
mov esi, dword [esp + 0x10]
lea eax, [esi + ebx]
mov dword [esp], eax
lea eax, [ebx - 1]
mov edi, eax
shr edi, 1
add edi, esi
test eax, eax
je 0x526e84
mov eax, ebx
and eax, 0xfffffffe
mov ebp, edi
mov esi, dword [esp]
nop word [eax + eax]
mov dword [esp + 8], edi
mov dword [esp], eax
movzx eax, byte [edi]
shr eax, cl
and al, 0xf
mov byte [esi - 1], al
xor eax, eax
cmp ecx, 4
lea ecx, [ecx + 4]
sete al
mov edi, 0
cmove ecx, edi
sub ebp, eax
neg eax
mov edi, dword [esp + 8]
movzx eax, byte [edi + eax]
shr eax, cl
and al, 0xf
mov byte [esi - 2], al
add esi, 0xfffffffe
xor eax, eax
cmp ecx, 4
lea ecx, [ecx + 4]
sete al
mov edi, 0
cmove ecx, edi
sub ebp, eax
mov eax, dword [esp]
mov edi, ebp
add eax, 0xfffffffe
jne 0x526d70
jmp 0x526e89
test ebx, ebx
je 0x526ead
lea ecx, [ebx + ebx]
add ecx, 6
not ecx
and ecx, 6
mov esi, dword [esp + 0x10]
lea eax, [esi + ebx]
mov dword [esp], eax
lea eax, [ebx - 1]
mov edi, eax
shr edi, 2
add edi, esi
test eax, eax
je 0x526e98
mov eax, ebx
and eax, 0xfffffffe
mov ebp, edi
mov esi, dword [esp]
nop word [eax + eax]
mov dword [esp + 8], edi
mov dword [esp], eax
movzx eax, byte [edi]
shr eax, cl
and al, 3
mov byte [esi - 1], al
xor eax, eax
cmp ecx, 6
lea ecx, [ecx + 2]
sete al
mov edi, 0
cmove ecx, edi
sub ebp, eax
neg eax
mov edi, dword [esp + 8]
movzx eax, byte [edi + eax]
shr eax, cl
and al, 3
mov byte [esi - 2], al
add esi, 0xfffffffe
xor eax, eax
cmp ecx, 6
lea ecx, [ecx + 2]
sete al
mov edi, 0
cmove ecx, edi
sub ebp, eax
mov eax, dword [esp]
mov edi, ebp
add eax, 0xfffffffe
jne 0x526e10
jmp 0x526e9d
mov dword [esp], ebp
mov esi, ecx
mov ecx, dword [esp]
test bl, 1
je 0x526ead
movzx eax, byte [esi]
bt eax, edi
setb byte [ecx - 1]
jmp 0x526ead
mov ebp, edi
mov esi, dword [esp]
test bl, 1
je 0x526ead
movzx eax, byte [ebp]
shr eax, cl
and al, 0xf
jmp 0x526eaa
mov ebp, edi
mov esi, dword [esp]
test bl, 1
je 0x526ead
movzx eax, byte [ebp]
shr eax, cl
and al, 3
mov byte [esi - 1], al
mov edi, dword [esp + 0x70]
mov byte [edi + 9], 8
mov byte [edi + 0xb], 8
mov dword [edi + 4], ebx
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x10]
cmp word [esp + 4], 0
jne 0x526ca6
mov al, 3
mov ah, 2
mov dl, 0x18
test ebx, ebx
je 0x526ef2
lea eax, [ebx + ebx*2]
mov dword [esp], eax
add eax, ebp
add ebp, ebx
cmp ebx, 1
jne 0x526ef9
mov edi, ebp
mov esi, eax
jmp 0x526f77
xor ecx, ecx
jmp 0x526fb2
mov edx, ebx
and edx, 0xfffffffe
nop
movzx esi, byte [ebp - 1]
lea esi, [esi + esi*2]
mov edi, ebp
mov ebp, ecx
movzx ecx, byte [ecx + esi + 2]
mov byte [eax - 1], cl
movzx ecx, byte [edi - 1]
lea ecx, [ecx + ecx*2]
movzx ecx, byte [ebp + ecx + 1]
mov byte [eax - 2], cl
movzx ecx, byte [edi - 1]
lea ecx, [ecx + ecx*2]
movzx ecx, byte [ebp + ecx]
mov byte [eax - 3], cl
lea ecx, [edi - 2]
mov dword [esp + 4], ecx
movzx ecx, byte [edi - 2]
lea ecx, [ecx + ecx*2]
movzx ecx, byte [ebp + ecx + 2]
mov byte [eax - 4], cl
movzx ecx, byte [edi - 2]
lea ecx, [ecx + ecx*2]
movzx ecx, byte [ebp + ecx + 1]
lea esi, [eax - 6]
mov byte [eax - 5], cl
movzx ecx, byte [edi - 2]
mov edi, dword [esp + 4]
lea ecx, [ecx + ecx*2]
movzx ecx, byte [ebp + ecx]
mov byte [eax - 6], cl
mov ecx, ebp
mov ebp, edi
mov eax, esi
add edx, 0xfffffffe
jne 0x526f00
test bl, 1
mov dl, 0x18
je 0x526fa7
movzx eax, byte [edi - 1]
lea eax, [eax + eax*2]
mov al, byte [ecx + eax + 2]
mov byte [esi - 1], al
movzx eax, byte [edi - 1]
lea eax, [eax + eax*2]
mov al, byte [ecx + eax + 1]
mov byte [esi - 2], al
movzx eax, byte [edi - 1]
lea eax, [eax + eax*2]
mov al, byte [ecx + eax]
mov byte [esi - 3], al
mov edi, dword [esp + 0x70]
mov al, 3
mov ah, 2
mov ecx, dword [esp]
mov byte [edi + 9], 8
mov byte [edi + 0xb], dl
mov dword [edi + 4], ecx
mov byte [edi + 8], ah
mov byte [edi + 0xa], al
mov ebx, dword [esp + 0x6c]
mov ecx, dword [ebx + 0x78]
mov eax, ecx
and eax, 0x40080
cmp eax, 0x40000
jne 0x526ff8
mov al, byte [edi + 8]
or al, 2
cmp al, 6
jne 0x526ff8
mov eax, dword [ebx + 0x120]
add eax, 1
push 0
push eax
push edi
call fcn.0052aee0
add esp, 0xc
mov ecx, dword [ebx + 0x78]
test ecx, 0x600000
je 0x52743a
movzx eax, byte [edi + 8]
mov dword [esp + 4], eax
and eax, 3
cmp eax, 2
jne 0x52743a
mov edx, dword [ebx + 0x120]
add edx, 1
movzx eax, word [ebx + 0x246]
movzx ecx, word [ebx + 0x248]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
add eax, ecx
mov ecx, 0x8000
sub ecx, eax
mov dword [esp + 0x20], ecx
mov ecx, dword [edi]
cmp byte [edi + 9], 8
mov dword [esp + 0x50], ecx
jne 0x527130
mov eax, dword [ebx + 0x190]
mov dword [esp + 8], eax
test eax, eax
je 0x527295
mov eax, dword [ebx + 0x194]
mov dword [esp + 0x14], eax
test eax, eax
je 0x527295
test ecx, ecx
je 0x5273cd
mov dword [esp], 0
mov edi, ecx
mov esi, edx
mov ebx, edx
jmp 0x5270a6
movzx eax, byte [esi + 3]
add esi, 4
mov byte [ebx + 1], al
add ebx, 2
add edi, 0xffffffff
je 0x5273d4
movzx eax, byte [esi]
mov ah, byte [esi + 2]
movzx edx, byte [esi + 1]
movzx ecx, al
cmp al, dl
jne 0x5270d0
cmp al, ah
jne 0x5270d0
mov edx, dword [esp + 0x6c]
mov ebp, dword [edx + 0x188]
test ebp, ebp
je 0x52710f
add ebp, ecx
jmp 0x52710b
mov ebp, dword [esp + 0x14]
movzx ecx, byte [ebp + ecx]
movzx edx, byte [ebp + edx]
imul ecx, dword [esp + 0xc]
imul edx, dword [esp + 0x10]
add edx, ecx
movzx eax, ah
movzx eax, byte [ebp + eax]
imul eax, dword [esp + 0x20]
lea ebp, [eax + edx]
add ebp, 0x4000
or dword [esp], 1
shr ebp, 0xf
add ebp, dword [esp + 8]
movzx eax, byte [ebp]
mov byte [ebx], al
test byte [esp + 4], 4
jne 0x527090
add esi, 3
add ebx, 1
add edi, 0xffffffff
jne 0x5270a6
jmp 0x5273d4
mov eax, dword [ebx + 0x19c]
mov dword [esp + 0x18], eax
test eax, eax
je 0x527312
mov eax, dword [ebx + 0x198]
mov dword [esp + 0x54], eax
test eax, eax
je 0x527312
test ecx, ecx
je 0x5273cd
mov dword [esp], 0
mov edi, ecx
mov dword [esp + 8], edx
jmp 0x527191
movzx eax, byte [edx + 6]
mov byte [esi + 2], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [esi + 3], al
add esi, 4
mov dword [esp + 8], esi
add edi, 0xffffffff
je 0x5273d4
movzx ebx, word [edx]
shl ebx, 0x10
bswap ebx
movzx ecx, byte [edx + 2]
movzx ebp, byte [edx + 3]
mov eax, ecx
mov dword [esp + 0x14], ecx
shl ecx, 8
or ecx, ebp
movzx eax, word [edx + 4]
shl eax, 0x10
bswap eax
cmp ecx, ebx
jne 0x5271f0
cmp bx, ax
jne 0x5271f0
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + 0x18c]
test eax, eax
mov esi, dword [esp + 8]
je 0x527278
movzx ecx, byte [ecx + 0x180]
shr ebp, cl
mov eax, dword [eax + ebp*4]
mov ecx, dword [esp + 0x14]
movzx ebx, word [eax + ecx*2]
jmp 0x527278
mov dword [esp + 0x40], edi
movzx edi, bl
mov ecx, dword [esp + 0x6c]
movzx ecx, byte [ecx + 0x180]
shr edi, cl
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x18]
mov edi, dword [edx + edi*4]
shr ebx, 8
movzx ebx, word [edi + ebx*2]
shr ebp, cl
movzx edi, al
shr edi, cl
mov ebp, dword [edx + ebp*4]
mov esi, dword [esp + 0x14]
movzx ebp, word [ebp + esi*2]
mov edi, dword [edx + edi*4]
mov edx, dword [esp + 0x1c]
shr eax, 8
movzx eax, word [edi + eax*2]
imul ebx, dword [esp + 0xc]
imul ebp, dword [esp + 0x10]
add ebp, ebx
imul eax, dword [esp + 0x20]
add eax, ebp
add eax, 0x4000
mov ebx, eax
shr ebx, 0xf
movzx edi, bl
shr edi, cl
mov ecx, dword [esp + 0x54]
mov ecx, dword [ecx + edi*4]
mov edi, dword [esp + 0x40]
shr eax, 0x16
and eax, 0x1fe
movzx ebx, word [ecx + eax]
or dword [esp], 1
mov esi, dword [esp + 8]
rol bx, 8
mov word [esi], bx
test byte [esp + 4], 4
jne 0x527170
add edx, 6
add esi, 2
jmp 0x527184
test ecx, ecx
je 0x5273cd
mov dword [esp], 0
mov esi, edx
mov edi, edx
jmp 0x5272c6
movzx eax, byte [edi + 3]
add edi, 4
mov byte [esi + 1], al
add esi, 2
add ecx, 0xffffffff
je 0x5273d4
movzx eax, byte [edi]
movzx edx, byte [edi + 2]
movzx ebx, byte [edi + 1]
cmp al, bl
jne 0x5272d9
cmp al, dl
je 0x5272f9
movzx ebp, al
movzx eax, dl
or dword [esp], 1
imul ebp, dword [esp + 0xc]
imul ebx, dword [esp + 0x10]
add ebx, ebp
imul eax, dword [esp + 0x20]
add eax, ebx
shr eax, 0xf
mov byte [esi], al
test byte [esp + 4], 4
jne 0x5272b0
add edi, 3
add esi, 1
add ecx, 0xffffffff
jne 0x5272c6
jmp 0x5273d4
test ecx, ecx
je 0x5273cd
mov dword [esp], 0
mov dword [esp + 8], edx
jmp 0x527362
mov edi, ecx
movzx eax, byte [edx + 6]
mov byte [esi + 2], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [esi + 3], al
add esi, 4
mov dword [esp + 8], esi
mov eax, dword [esp]
xor ebx, ebx
movzx ecx, byte [esp + 0x14]
mov bl, cl
or eax, ebx
mov dword [esp], eax
mov ecx, edi
add ecx, 0xffffffff
je 0x5273d4
movzx edi, word [edx]
shl edi, 0x10
bswap edi
movzx ebp, word [edx + 2]
shl ebp, 0x10
bswap ebp
movzx ebx, word [edx + 4]
shl ebx, 0x10
bswap ebx
mov esi, edi
xor esi, ebp
mov eax, edi
xor eax, ebx
or eax, esi
setne byte [esp + 0x14]
imul edi, dword [esp + 0xc]
imul ebp, dword [esp + 0x10]
add ebp, edi
imul ebx, dword [esp + 0x20]
lea eax, [ebx + ebp]
add eax, 0x4000
mov ebx, eax
shr eax, 0x17
mov esi, dword [esp + 8]
mov byte [esi], al
shr ebx, 0xf
mov byte [esi + 1], bl
test byte [esp + 4], 4
jne 0x527330
mov edi, ecx
add edx, 6
add esi, 2
jmp 0x527346
mov dword [esp], 0
mov edi, dword [esp + 0x70]
mov al, byte [edi + 9]
mov cl, byte [edi + 0xa]
add cl, 0xfe
mov byte [edi + 0xa], cl
and byte [edi + 8], 0xfd
mul cl
mov byte [edi + 0xb], al
movzx ecx, al
cmp al, 8
jb 0x5273fe
shr ecx, 3
imul ecx, dword [esp + 0x50]
jmp 0x52740d
mov eax, dword [esp + 0x50]
imul eax, ecx
add eax, 7
shr eax, 3
mov ecx, eax
mov ebx, dword [esp + 0x6c]
mov dword [edi + 4], ecx
cmp dword [esp], 0
je 0x52787e
mov byte [ebx + 0x244], 1
mov ecx, dword [ebx + 0x78]
mov eax, ecx
and eax, 0x600000
cmp eax, 0x200000
je 0x52a257
test ecx, 0x4000
je 0x52745b
test byte [ebx + 0x71], 8
jne 0x52745b
mov edx, dword [ebx + 0x120]
add edx, 1
mov ecx, edi
call fcn.0052a7d0
mov ecx, dword [ebx + 0x78]
test cl, 0x80
jne 0x52762f
mov eax, dword [ebx + 0x78]
mov ecx, eax
and ecx, 0x602000
cmp ecx, 0x2000
mov edi, dword [esp + 0x70]
jne case.0x5274f0.1
test al, 0x80
jne 0x52772e
mov eax, dword [esp + 0x6c]
mov al, byte [eax + 0x14b]
cmp al, 3
je case.0x5274f0.1
mov eax, dword [esp + 0x6c]
mov ebx, dword [eax + 0x120]
mov ecx, dword [eax + 0x180]
mov dword [esp + 0x10], ecx
mov esi, dword [eax + 0x188]
mov eax, dword [eax + 0x18c]
mov dword [esp + 0xc], eax
mov edx, dword [edi]
mov al, byte [edi + 9]
cmp al, 8
ja 0x5274ca
test esi, esi
jne 0x5274dd
cmp al, 0x10
jne case.0x5274f0.1
cmp dword [esp + 0xc], 0
je case.0x5274f0.1
movzx ecx, byte [edi + 8]
cmp ecx, 6
ja case.0x5274f0.1
lea ebp, [ebx + 1]
mov dword [esp], edx
jmp dword [ecx*4 + 0x5705ac]
cmp al, 2
mov dword [esp + 4], esi
jne 0x5275ba
test edx, edx
je 0x5275ba
xor ebx, ebx
mov dword [esp + 0x20], ebp
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx eax, byte [ebp]
mov ecx, eax
and ecx, 0xffffffc0
mov esi, eax
and esi, 0x30
mov edi, eax
mov dword [esp + 8], eax
shr eax, 6
lea edx, [eax + ecx]
shr ecx, 2
or ecx, edx
lea ecx, [ecx + eax*4]
lea eax, [esi + esi*4]
mov edx, esi
shr edx, 2
or edx, eax
and edi, 0xc
shr esi, 4
or esi, edx
mov edx, dword [esp]
lea eax, [edi + edi*4]
lea eax, [edi + eax*4]
shr edi, 2
or edi, eax
mov eax, dword [esp + 4]
movzx eax, byte [eax + ecx]
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx + esi]
mov esi, dword [esp + 4]
and al, 0xc0
shr cl, 2
and cl, 0x30
or cl, al
movzx eax, byte [esi + edi]
shr al, 4
and al, 0xc
or al, cl
mov ecx, dword [esp + 8]
and ecx, 3
imul ecx, ecx, 0x55
movzx ecx, byte [esi + ecx]
shr cl, 6
or cl, al
mov byte [ebp], cl
add ebp, 1
add ebx, 4
cmp ebx, edx
jb 0x527520
mov edi, dword [esp + 0x70]
mov al, byte [edi + 9]
mov ebp, dword [esp + 0x20]
cmp al, 4
je 0x52960f
cmp al, 8
je 0x52965e
cmp al, 0x10
jne case.0x5274f0.1
test edx, edx
je case.0x5274f0.1
cmp edx, 1
je 0x528909
mov eax, edx
and eax, 0xfffffffe
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movzx edx, byte [ebp + 1]
shr edx, cl
mov ebx, dword [esi + edx*4]
movzx edx, byte [ebp]
movzx edx, word [ebx + edx*2]
rol dx, 8
mov word [ebp], dx
movzx edx, byte [ebp + 3]
shr edx, cl
mov ebx, dword [esi + edx*4]
movzx edx, byte [ebp + 2]
movzx edx, word [ebx + edx*2]
rol dx, 8
mov word [ebp + 2], dx
add ebp, 4
add eax, 0xfffffffe
jne 0x5275f0
jmp 0x528909
mov eax, dword [esp + 0x70]
movzx eax, byte [eax + 8]
cmp eax, 6
ja case.0x5276c0.253
mov ecx, dword [ebx + 0x74]
mov dword [esp + 0x10], ecx
mov edi, dword [ebx + 0x120]
lea esi, [edi + 1]
mov ecx, dword [ebx + 0x188]
mov dword [esp + 0xc], ecx
mov ecx, dword [ebx + 0x190]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebx + 0x194]
mov dword [esp + 0x14], ecx
mov ecx, dword [ebx + 0x18c]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebx + 0x198]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x19c]
mov dword [esp + 0x40], ecx
mov ebp, dword [ebx + 0x180]
mov edx, dword [esp + 0x70]
mov edx, dword [edx]
mov dword [esp + 4], edx
mov dword [esp], esi
mov ecx, ebp
mov dword [esp + 8], ebp
jmp dword [eax*4 + 0x570550]
mov eax, dword [esp + 0x70]
mov al, byte [eax + 9]
add al, 0xff
cmp al, 0xf
ja case.0x5276c0.253
movzx eax, al
jmp dword [eax*4 + 0x57056c]
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
mov dword [esp], eax
mov eax, 7
jmp 0x5276f7
sub eax, 1
mov ecx, 7
cmovb eax, ecx
adc esi, 0
add edx, 0xffffffff
je case.0x5276c0.253
movzx edi, byte [esi]
mov ebp, edi
mov ecx, eax
shr ebp, cl
and ebp, 1
cmp ebp, dword [esp]
jne 0x5276e0
mov cl, 7
sub cl, al
mov ebp, 0x7f7f
shr ebp, cl
mov dword [esp + 4], edx
movzx edx, word [ebx + 0x168]
mov ecx, eax
shl edx, cl
and ebp, edi
or edx, ebp
mov byte [esi], dl
mov edx, dword [esp + 4]
jmp 0x5276e0
mov eax, dword [esp + 0x6c]
cmp word [eax + 0x144], 0
jne case.0x5274f0.1
mov eax, dword [esp + 0x6c]
mov al, byte [eax + 0x14b]
test al, 4
je 0x527491
mov esi, dword [esp + 0x6c]
mov eax, dword [esi + 0x78]
mov ecx, eax
not ecx
test ecx, 0x40080
jne 0x527784
mov cl, byte [edi + 8]
or cl, 2
cmp cl, 6
jne 0x527784
mov eax, dword [esi + 0x120]
add eax, 1
push 0
push eax
push edi
call fcn.0052aee0
add esp, 0xc
mov eax, dword [esi + 0x78]
test eax, 0x800000
je 0x528a2d
mov eax, dword [esp + 0x70]
movzx edx, byte [eax + 8]
test dl, 4
je 0x528a2d
test dl, 4
je 0x528a2d
mov edi, dword [esp + 0x6c]
mov esi, dword [edi + 0x120]
mov ecx, dword [esp + 0x70]
mov eax, dword [ecx]
mov cl, byte [ecx + 9]
cmp cl, 0x10
je 0x52803b
cmp cl, 8
jne 0x528a2d
mov ecx, dword [esp + 0x6c]
mov ecx, dword [ecx + 0x190]
test ecx, ecx
je 0x528a2d
test eax, eax
je 0x528a2d
and edx, 2
add edx, 2
lea edi, [eax - 1]
mov ebx, eax
and ebx, 3
je 0x527831
mov dword [esp], eax
mov dword [esp + 4], edi
xor ebp, ebp
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx edi, byte [esi + edx]
mov eax, ebx
movzx ebx, byte [ecx + edi]
mov byte [esi + edx], bl
mov ebx, eax
add esi, edx
add ebp, 1
cmp eax, ebp
jne 0x527810
mov eax, dword [esp]
sub eax, ebp
mov edi, dword [esp + 4]
cmp edi, 3
jb 0x528a2d
lea edi, [edx + edx*2]
nop dword [eax]
movzx ebx, byte [esi + edx]
movzx ebx, byte [ecx + ebx]
mov byte [esi + edx], bl
movzx ebx, byte [esi + edx*2]
movzx ebx, byte [ecx + ebx]
mov byte [esi + edx*2], bl
movzx ebx, byte [esi + edi]
movzx ebx, byte [ecx + ebx]
mov byte [esi + edi], bl
movzx ebx, byte [esi + edx*4]
movzx ebx, byte [ecx + ebx]
mov byte [esi + edx*4], bl
add esi, edx
add esi, edx
add esi, edx
add esi, edx
add eax, 0xfffffffc
jne 0x527840
jmp 0x528a2d
mov ecx, dword [ebx + 0x78]
test ecx, 0x4000
jne 0x527442
jmp 0x52745b
mov eax, dword [esp + 0x70]
cmp byte [eax + 9], 8
jne 0x527b8a
cmp dword [esp + 0xc], 0
je 0x528502
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b2]
add edi, 3
jmp 0x5278ef
movzx ecx, cx
mov esi, dword [esp + 0xc]
movzx ecx, byte [esi + ecx]
mov byte [edi - 2], cl
movzx ecx, dx
movzx ecx, byte [esi + ecx]
mov byte [edi - 1], cl
movzx ecx, byte [edi]
movzx ecx, byte [esi + ecx]
mov byte [edi], cl
add edi, 3
mov edx, ebp
add edx, 0xffffffff
je case.0x5276c0.253
mov ebp, edx
movzx ecx, byte [edi - 2]
movzx edx, byte [edi - 1]
cmp ax, cx
jne 0x5278c0
cmp word [ebx + 0x1b4], dx
jne 0x5278c0
movzx esi, byte [edi]
cmp word [ebx + 0x1b6], si
jne 0x5278c0
movzx ecx, byte [ebx + 0x162]
mov byte [edi - 2], cl
movzx ecx, byte [ebx + 0x164]
mov byte [edi - 1], cl
movzx ecx, byte [ebx + 0x166]
jmp 0x5278df
mov eax, dword [esp + 0x70]
cmp byte [eax + 9], 8
jne 0x527cbf
cmp dword [esp + 0x14], 0
je 0x52807a
cmp dword [esp + 0x18], 0
je 0x52807a
cmp dword [esp + 0xc], 0
je 0x52807a
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x527980
movzx ecx, byte [ebx + 0x168]
mov byte [esi + eax*2], cl
add eax, 1
cmp edx, eax
je case.0x5276c0.253
movzx ecx, byte [esi + eax*2 + 1]
test cx, cx
je 0x52796b
cmp cl, 0xff
jne 0x52799d
movzx ecx, byte [esi + eax*2]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edi + ecx]
jmp 0x527972
movzx edx, cx
movzx esi, byte [esi + eax*2]
mov edi, dword [esp + 0x14]
movzx esi, byte [edi + esi]
imul esi, edx
not cl
movzx ecx, cl
imul cx, word [ebx + 0x172]
add ecx, esi
add ecx, 0x80
movzx edx, cx
mov ecx, edx
shr ecx, 8
add ecx, edx
shr ecx, 8
test dword [esp + 0x10], 0x2000
jne 0x5279e6
movzx ecx, cl
mov edx, dword [esp + 0x18]
movzx ecx, byte [edx + ecx]
mov edx, dword [esp + 4]
mov esi, dword [esp]
jmp 0x527972
mov eax, dword [esp + 0x70]
cmp byte [eax + 9], 8
jne 0x527dc2
cmp dword [esp + 0x14], 0
je 0x5280da
cmp dword [esp + 0x18], 0
je 0x5280da
cmp dword [esp + 0xc], 0
je 0x5280da
test edx, edx
je case.0x5276c0.253
xor ecx, ecx
jmp 0x527a55
movzx eax, byte [ebx + 0x162]
mov byte [esi + ecx*4], al
movzx eax, byte [ebx + 0x164]
mov byte [esi + ecx*4 + 1], al
movzx eax, byte [ebx + 0x166]
mov byte [esi + ecx*4 + 2], al
add ecx, 1
cmp edx, ecx
je case.0x5276c0.253
movzx eax, byte [esi + ecx*4 + 3]
test eax, eax
je 0x527a2a
cmp al, 0xff
jne 0x527a89
movzx eax, byte [esi + ecx*4]
mov edi, dword [esp + 0xc]
movzx eax, byte [edi + eax]
mov byte [esi + ecx*4], al
movzx eax, byte [esi + ecx*4 + 1]
movzx eax, byte [edi + eax]
mov byte [esi + ecx*4 + 1], al
movzx eax, byte [esi + ecx*4 + 2]
movzx eax, byte [edi + eax]
jmp 0x527a46
movzx edx, byte [esi + ecx*4]
mov esi, dword [esp + 0x14]
movzx edx, byte [esi + edx]
imul edx, eax
movzx edi, word [ebx + 0x16c]
mov ebx, eax
not bl
movzx esi, bl
imul edi, esi
lea ebx, [edx + edi]
add edx, edi
add edx, 0x80
movzx edx, dh
add edx, ebx
add edx, 0x80
shr edx, 8
test dword [esp + 0x10], 0x2000
jne 0x527ad7
movzx edx, dl
mov edi, dword [esp + 0x18]
movzx edx, byte [edi + edx]
mov edi, dword [esp]
mov byte [edi + ecx*4], dl
movzx edx, byte [edi + ecx*4 + 1]
mov edi, dword [esp + 0x14]
movzx edx, byte [edi + edx]
imul edx, eax
mov edi, dword [esp + 0x6c]
movzx edi, word [edi + 0x16e]
imul edi, esi
lea ebx, [edx + edi]
add edx, edi
add edx, 0x80
movzx edx, dh
add edx, ebx
add edx, 0x80
shr edx, 8
test dword [esp + 0x10], 0x2000
jne 0x527b29
movzx edx, dl
mov edi, dword [esp + 0x18]
movzx edx, byte [edi + edx]
mov edi, dword [esp]
mov byte [edi + ecx*4 + 1], dl
movzx edx, byte [edi + ecx*4 + 2]
mov edi, dword [esp + 0x14]
movzx edx, byte [edi + edx]
imul edx, eax
mov ebx, dword [esp + 0x6c]
movzx eax, word [ebx + 0x170]
imul eax, esi
lea esi, [edx + eax]
add eax, edx
add eax, 0x80
movzx eax, ah
add eax, esi
add eax, 0x80
shr eax, 8
test dword [esp + 0x10], 0x2000
jne 0x527b7a
movzx eax, al
mov edx, dword [esp + 0x18]
movzx eax, byte [edx + eax]
mov edx, dword [esp + 4]
mov esi, dword [esp]
mov byte [esi + ecx*4 + 2], al
jmp 0x527a4a
cmp dword [esp + 0x20], 0
je 0x52856d
test edx, edx
je case.0x5276c0.253
lea eax, [ebx + 0x166]
mov dword [esp + 0x40], eax
movzx eax, word [ebx + 0x1b2]
mov dword [esp + 0x14], eax
add edi, 6
jmp 0x527c2a
mov dword [esp + 0x10], edx
mov edx, ecx
mov ecx, dword [esp + 8]
shr esi, cl
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + esi*4]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov word [edi - 5], ax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ecx, dword [esp]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov ecx, dword [esp + 8]
shr edx, cl
mov word [edi - 3], ax
add ebp, ebp
add ebp, dword [ebx + edx*4]
mov ebx, dword [esp + 0x6c]
movzx eax, word [ebp]
rol ax, 8
mov word [edi - 1], ax
add edi, 6
mov edx, dword [esp + 4]
add edx, 0xffffffff
je case.0x5276c0.253
mov dword [esp + 4], edx
movzx edx, byte [edi - 5]
mov ebx, edx
shl ebx, 8
movzx esi, byte [edi - 4]
or ebx, esi
movzx ebp, byte [edi - 1]
movzx ecx, byte [edi]
movzx eax, byte [edi - 2]
mov dword [esp + 0xc], eax
movzx eax, byte [edi - 3]
mov dword [esp], eax
cmp ebx, dword [esp + 0x14]
jne 0x527bc0
mov ebx, dword [esp]
shl ebx, 8
add ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x6c]
movzx eax, word [eax + 0x1b4]
cmp ebx, eax
jne 0x527bc0
mov eax, ebp
shl eax, 8
or eax, ecx
mov ebx, dword [esp + 0x6c]
movzx ebx, word [ebx + 0x1b6]
cmp eax, ebx
jne 0x527bc0
mov ebx, dword [esp + 0x6c]
movzx eax, word [ebx + 0x162]
rol ax, 8
mov word [edi - 5], ax
movzx eax, word [ebx + 0x164]
rol ax, 8
mov word [edi - 3], ax
mov ebp, dword [esp + 0x40]
jmp 0x527c0e
cmp dword [esp + 0x20], 0
je 0x5281c7
cmp dword [esp + 0x1c], 0
je 0x5281c7
cmp dword [esp + 0x40], 0
je 0x5281c7
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x527d07
movzx edx, word [ebx + 0x168]
mov byte [esi + eax*4], dh
mov byte [esi + eax*4 + 1], dl
add eax, 1
cmp dword [esp + 4], eax
je case.0x5276c0.253
movzx edx, word [esi + eax*4 + 2]
shl edx, 0x10
bswap edx
test edx, edx
je 0x527cec
cmp dx, 0xffff
jne 0x527d41
movzx edx, byte [esi + eax*4 + 1]
mov ecx, dword [esp + 8]
shr edx, cl
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0x20]
mov edx, dword [esi + edx*4]
mov esi, dword [esp]
movzx esi, byte [esi + eax*4]
movzx edx, word [edx + esi*2]
mov esi, dword [esp]
jmp 0x527cf3
mov edi, esi
movzx esi, byte [esi + eax*4 + 1]
mov ecx, ebp
shr esi, cl
mov ebp, dword [esp + 0x40]
mov esi, dword [ebp + esi*4]
mov ecx, dword [esp + 0x10]
movzx edi, byte [edi + eax*4]
movzx esi, word [esi + edi*2]
imul esi, edx
movzx edi, word [ebx + 0x172]
xor edx, 0xffff
imul edx, edi
lea edi, [esi + edx]
add edx, esi
add edx, 0x8000
shr edx, 0x10
lea esi, [edx + edi]
add esi, 0x8000
mov edx, esi
shr edx, 0x10
test ecx, 0x2000
jne 0x527dae
movzx edx, dl
mov ecx, dword [esp + 8]
shr edx, cl
mov edi, dword [esp + 0x1c]
mov edx, dword [edi + edx*4]
shr esi, 0x18
movzx edx, word [edx + esi*2]
rol dx, 8
mov esi, dword [esp]
mov word [esi + eax*4], dx
mov ebp, dword [esp + 8]
jmp 0x527cfa
cmp dword [esp + 0x20], 0
je 0x528248
cmp dword [esp + 0x1c], 0
je 0x528248
cmp dword [esp + 0x40], 0
je 0x528248
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x527e0c
rol dx, 8
mov esi, dword [esp]
mov word [esi + eax*8 + 4], dx
mov ebp, dword [esp + 8]
add eax, 1
cmp dword [esp + 4], eax
je case.0x5276c0.253
movzx edi, word [esi + eax*8 + 6]
shl edi, 0x10
bswap edi
test edi, edi
je 0x527ea1
cmp di, 0xffff
jne 0x527ed4
movzx edx, byte [esi + eax*8 + 1]
mov ecx, dword [esp + 8]
shr edx, cl
mov edi, dword [esp + 0x20]
mov edx, dword [edi + edx*4]
mov esi, dword [esp]
movzx esi, byte [esi + eax*8]
movzx edx, word [edx + esi*2]
mov esi, dword [esp]
mov byte [esi + eax*8], dh
mov esi, dword [esp]
mov byte [esi + eax*8 + 1], dl
mov edx, dword [esp]
movzx edx, byte [edx + eax*8 + 3]
mov ecx, dword [esp + 8]
shr edx, cl
mov edx, dword [edi + edx*4]
mov esi, dword [esp]
movzx esi, byte [esi + eax*8 + 2]
movzx edx, word [edx + esi*2]
rol dx, 8
mov esi, dword [esp]
mov word [esi + eax*8 + 2], dx
mov edx, dword [esp]
movzx edx, byte [edx + eax*8 + 5]
mov ecx, dword [esp + 8]
shr edx, cl
mov ebp, dword [esp + 8]
mov edx, dword [edi + edx*4]
mov esi, dword [esp]
movzx esi, byte [esi + eax*8 + 4]
movzx edx, word [edx + esi*2]
mov esi, dword [esp]
jmp 0x527ec6
movzx edx, word [ebx + 0x162]
mov byte [esi + eax*8], dh
mov byte [esi + eax*8 + 1], dl
movzx edx, word [ebx + 0x164]
rol dx, 8
mov word [esi + eax*8 + 2], dx
movzx edx, word [ebx + 0x166]
rol dx, 8
mov word [esi + eax*8 + 4], dx
jmp 0x527dff
movzx edx, byte [esi + eax*8 + 1]
mov ecx, ebp
shr edx, cl
mov ebp, dword [esp + 0x40]
mov edx, dword [ebp + edx*4]
movzx esi, byte [esi + eax*8]
movzx edx, word [edx + esi*2]
imul edx, edi
movzx esi, word [ebx + 0x16c]
mov ebp, dword [esp + 0x10]
mov ecx, edi
xor ecx, 0xffff
mov dword [esp + 0xc], ecx
imul esi, ecx
lea ebx, [edx + esi]
add edx, esi
add edx, 0x8000
shr edx, 0x10
lea esi, [edx + ebx]
add esi, 0x8000
mov edx, esi
shr edx, 0x10
test ebp, 0x2000
jne 0x527f45
movzx edx, dl
mov ecx, dword [esp + 8]
shr edx, cl
mov ebx, dword [esp + 0x1c]
mov edx, dword [ebx + edx*4]
shr esi, 0x18
movzx edx, word [edx + esi*2]
rol dx, 8
mov esi, dword [esp]
mov word [esi + eax*8], dx
movzx edx, byte [esi + eax*8 + 3]
mov ecx, dword [esp + 8]
shr edx, cl
mov ebx, dword [esp + 0x40]
mov edx, dword [ebx + edx*4]
movzx esi, byte [esi + eax*8 + 2]
movzx edx, word [edx + esi*2]
imul edx, edi
mov esi, dword [esp + 0x6c]
movzx esi, word [esi + 0x16e]
mov ebp, dword [esp + 0xc]
imul esi, ebp
lea ebx, [edx + esi]
add edx, esi
add edx, 0x8000
shr edx, 0x10
lea esi, [edx + ebx]
add esi, 0x8000
mov edx, esi
shr edx, 0x10
test dword [esp + 0x10], 0x2000
jne 0x527fbd
movzx edx, dl
mov ecx, dword [esp + 8]
shr edx, cl
mov ebx, dword [esp + 0x1c]
mov edx, dword [ebx + edx*4]
shr esi, 0x18
movzx edx, word [edx + esi*2]
rol dx, 8
mov esi, dword [esp]
mov word [esi + eax*8 + 2], dx
movzx edx, byte [esi + eax*8 + 5]
mov ecx, dword [esp + 8]
shr edx, cl
mov ebx, dword [esp + 0x40]
mov edx, dword [ebx + edx*4]
movzx esi, byte [esi + eax*8 + 4]
movzx edx, word [edx + esi*2]
imul edi, edx
mov ebx, dword [esp + 0x6c]
movzx edx, word [ebx + 0x170]
imul ebp, edx
lea edx, [edi + ebp]
lea esi, [edi + ebp]
add esi, 0x8000
shr esi, 0x10
add esi, edx
add esi, 0x8000
mov edx, esi
shr edx, 0x10
test dword [esp + 0x10], 0x2000
jne 0x527def
movzx edx, dl
mov ecx, dword [esp + 8]
shr edx, cl
mov edi, dword [esp + 0x1c]
mov edx, dword [edi + edx*4]
shr esi, 0x18
movzx edx, word [edx + esi*2]
jmp 0x527def
mov edi, dword [edi + 0x198]
test edi, edi
je 0x528a2d
test eax, eax
je 0x528a2d
add esi, 1
mov ecx, dword [esp + 0x6c]
mov ecx, dword [ecx + 0x180]
and edx, 2
add edx, edx
add edx, 4
add esi, edx
add esi, 0xfffffffe
test al, 1
jne 0x5289b7
mov ebx, eax
jmp 0x5289d3
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x5280be
movzx esi, byte [edi + eax*2 + 1]
imul esi, edx
not cl
movzx ecx, cl
imul cx, word [ebx + 0x168]
add ecx, esi
add ecx, 0x80
movzx edx, cx
mov ecx, edx
shr ecx, 8
add ecx, edx
mov byte [edi + eax*2 + 1], ch
add eax, 1
cmp dword [esp + 4], eax
je case.0x5276c0.253
movzx ecx, byte [edi + eax*2 + 2]
movzx edx, cx
cmp edx, 0xff
je 0x5280b1
test cl, cl
jne 0x528086
mov ch, byte [ebx + 0x168]
jmp 0x5280ad
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x52818f
movzx esi, byte [edi + eax*4 + 1]
imul esi, ecx
mov edx, dword [esp + 0x6c]
movzx ebx, word [edx + 0x162]
mov edx, ecx
not dl
movzx edx, dl
imul ebx, edx
lea ebp, [esi + ebx]
add ebx, esi
add ebx, 0x80
movzx esi, bh
lea ebx, [esi + ebp]
add ebx, 0x80
mov byte [edi + eax*4 + 1], bh
movzx esi, byte [edi + eax*4 + 2]
imul esi, ecx
mov ebx, dword [esp + 0x6c]
movzx ebx, word [ebx + 0x164]
imul ebx, edx
lea ebp, [esi + ebx]
add ebx, esi
add ebx, 0x80
movzx esi, bh
lea ebx, [esi + ebp + 0x80]
mov byte [edi + eax*4 + 2], bh
mov ebx, dword [esp + 0x6c]
movzx esi, byte [edi + eax*4 + 3]
imul esi, ecx
movzx ecx, word [ebx + 0x166]
imul ecx, edx
lea edx, [esi + ecx]
add ecx, esi
add ecx, 0x80
movzx ecx, ch
add ecx, edx
add ecx, 0x80
mov edx, dword [esp + 4]
mov byte [edi + eax*4 + 3], ch
add eax, 1
cmp edx, eax
je case.0x5276c0.253
movzx ecx, byte [edi + eax*4 + 4]
cmp ecx, 0xff
je 0x528184
test cl, cl
jne 0x5280e9
movzx ecx, byte [ebx + 0x162]
mov byte [edi + eax*4 + 1], cl
movzx ecx, byte [ebx + 0x164]
mov byte [edi + eax*4 + 2], cl
movzx ecx, byte [ebx + 0x166]
mov byte [edi + eax*4 + 3], cl
jmp 0x528184
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x528227
movzx edx, word [esi + eax*4]
shl edx, 0x10
bswap edx
imul edx, ecx
movzx esi, word [ebx + 0x168]
xor ecx, 0xffff
imul ecx, esi
lea esi, [ecx + edx]
add ecx, edx
add ecx, 0x8000
shr ecx, 0x10
lea edx, [ecx + esi]
add edx, 0x8000
mov esi, dword [esp]
mov ecx, edx
shr ecx, 0x10
shr edx, 0x18
mov byte [esi + eax*4], dl
mov edx, dword [esp + 4]
mov byte [esi + eax*4 + 1], cl
add eax, 1
cmp edx, eax
je case.0x5276c0.253
movzx ecx, word [esi + eax*4 + 2]
shl ecx, 0x10
bswap ecx
cmp cx, 0xffff
je 0x52821c
test cx, cx
jne 0x5281d3
movzx ecx, word [ebx + 0x168]
mov byte [esi + eax*4], ch
jmp 0x528218
test edx, edx
je case.0x5276c0.253
xor eax, eax
jmp 0x528345
movzx edx, word [esi + eax*8]
shl edx, 0x10
bswap edx
movzx ebp, word [esi + eax*8 + 2]
shl ebp, 0x10
bswap ebp
imul edx, ecx
movzx edi, word [ebx + 0x162]
mov esi, ecx
xor esi, 0xffff
mov dword [esp + 8], esi
imul edi, esi
lea ebx, [edx + edi]
add edx, edi
add edx, 0x8000
mov esi, dword [esp]
movzx edi, word [esi + eax*8 + 4]
shr edx, 0x10
add ebx, edx
add ebx, 0x8000
mov edx, ebx
shr edx, 0x10
shr ebx, 0x18
mov esi, dword [esp]
mov byte [esi + eax*8], bl
mov esi, dword [esp]
mov byte [esi + eax*8 + 1], dl
imul ebp, ecx
mov edx, dword [esp + 0x6c]
movzx edx, word [edx + 0x164]
imul edx, dword [esp + 8]
lea ebx, [edx + ebp]
add edx, ebp
add edx, 0x8000
shr edx, 0x10
add ebx, edx
add ebx, 0x8000
mov edx, ebx
shr ebx, 0x18
mov esi, dword [esp]
mov byte [esi + eax*8 + 2], bl
mov ebx, dword [esp + 0x6c]
shr edx, 0x10
mov esi, dword [esp]
mov byte [esi + eax*8 + 3], dl
shl edi, 0x10
bswap edi
imul edi, ecx
movzx ecx, word [ebx + 0x166]
imul ecx, dword [esp + 8]
mov esi, dword [esp]
lea edx, [edi + ecx]
add ecx, edi
add ecx, 0x8000
shr ecx, 0x10
add edx, ecx
add edx, 0x8000
mov ecx, edx
shr edx, 0x18
mov byte [esi + eax*8 + 4], dl
mov edx, dword [esp + 4]
shr ecx, 0x10
mov byte [esi + eax*8 + 5], cl
add eax, 1
cmp edx, eax
je case.0x5276c0.253
movzx ecx, word [esi + eax*8 + 6]
shl ecx, 0x10
bswap ecx
cmp cx, 0xffff
je 0x52833a
test cx, cx
jne 0x528257
movzx ecx, word [ebx + 0x162]
mov byte [esi + eax*8], ch
mov byte [esi + eax*8 + 1], cl
movzx ecx, word [ebx + 0x164]
rol cx, 8
mov word [esi + eax*8 + 2], cx
movzx ecx, word [ebx + 0x166]
rol cx, 8
mov word [esi + eax*8 + 4], cx
jmp 0x52833a
cmp al, 8
jne 0x52883a
test edx, edx
je case.0x5274f0.1
cmp edx, 1
je 0x5284d6
mov eax, edx
and eax, 0xfffffffe
movzx ecx, byte [ebp]
movzx ecx, byte [esi + ecx]
mov byte [ebp], cl
movzx ecx, byte [ebp + 1]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 1], cl
movzx ecx, byte [ebp + 2]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 2], cl
movzx ecx, byte [ebp + 3]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 3], cl
movzx ecx, byte [ebp + 4]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 4], cl
movzx ecx, byte [ebp + 5]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 5], cl
add ebp, 6
add eax, 0xfffffffe
jne 0x5283ac
jmp 0x5284d6
cmp al, 8
jne 0x5288b5
test edx, edx
je case.0x5274f0.1
lea ecx, [edx - 1]
mov eax, edx
and eax, 3
cmp ecx, 3
jb 0x52844f
and edx, 0xfffffffc
movzx ecx, byte [ebp]
movzx ecx, byte [esi + ecx]
mov byte [ebp], cl
movzx ecx, byte [ebp + 2]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 2], cl
movzx ecx, byte [ebp + 4]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 4], cl
movzx ecx, byte [ebp + 6]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 6], cl
add ebp, 8
add edx, 0xfffffffc
jne 0x52841b
test eax, eax
je case.0x5274f0.1
xor ecx, ecx
movzx edx, byte [ebp + ecx*2]
movzx edx, byte [esi + edx]
mov byte [ebp + ecx*2], dl
add ecx, 1
cmp eax, ecx
jne 0x528459
jmp case.0x5274f0.1
cmp al, 8
jne 0x528939
test edx, edx
je case.0x5274f0.1
cmp edx, 1
je 0x5284d6
mov eax, edx
and eax, 0xfffffffe
movzx ecx, byte [ebp]
movzx ecx, byte [esi + ecx]
mov byte [ebp], cl
movzx ecx, byte [ebp + 1]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 1], cl
movzx ecx, byte [ebp + 2]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 2], cl
movzx ecx, byte [ebp + 4]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 4], cl
movzx ecx, byte [ebp + 5]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 5], cl
movzx ecx, byte [ebp + 6]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 6], cl
add ebp, 8
add eax, 0xfffffffe
jne 0x52848c
test dl, 1
je case.0x5274f0.1
movzx eax, byte [ebp]
mov al, byte [esi + eax]
mov byte [ebp], al
movzx eax, byte [ebp + 1]
mov al, byte [esi + eax]
mov byte [ebp + 1], al
movzx eax, byte [ebp + 2]
mov al, byte [esi + eax]
mov byte [ebp + 2], al
jmp case.0x5274f0.1
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b2]
add edi, 3
jmp 0x52852c
add edi, 3
add edx, 0xffffffff
je case.0x5276c0.253
movzx ecx, byte [edi - 2]
cmp ax, cx
jne 0x528520
movzx ecx, byte [edi - 1]
cmp word [ebx + 0x1b4], cx
jne 0x528520
movzx ecx, byte [edi]
cmp word [ebx + 0x1b6], cx
jne 0x528520
movzx ecx, byte [ebx + 0x162]
mov byte [edi - 2], cl
movzx ecx, byte [ebx + 0x164]
mov byte [edi - 1], cl
movzx ecx, byte [ebx + 0x166]
mov byte [edi], cl
jmp 0x528520
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b2]
add edi, 6
jmp 0x52859c
add edi, 6
add edx, 0xffffffff
je case.0x5276c0.253
movzx ecx, word [edi - 5]
shl ecx, 0x10
bswap ecx
cmp ecx, eax
jne 0x528590
movzx ecx, word [edi - 3]
shl ecx, 0x10
bswap ecx
mov esi, edx
movzx edx, word [ebx + 0x1b4]
cmp ecx, edx
mov edx, esi
jne 0x528590
movzx ecx, word [edi - 1]
shl ecx, 0x10
bswap ecx
movzx edx, word [ebx + 0x1b6]
cmp ecx, edx
mov edx, esi
jne 0x528590
movzx ecx, word [ebx + 0x162]
rol cx, 8
mov word [edi - 5], cx
movzx ecx, word [ebx + 0x164]
rol cx, 8
mov word [edi - 3], cx
movzx ecx, word [ebx + 0x166]
rol cx, 8
mov word [edi - 1], cx
jmp 0x528590
cmp dword [esp + 0xc], 0
je 0x5294ba
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
mov dword [esp], eax
mov eax, 6
jmp 0x528671
imul ecx, edx, 0x55
mov edx, dword [esp + 0xc]
movzx edx, byte [edx + ecx]
shr edx, 6
mov cl, 6
sub cl, al
mov esi, 0x3f3f
shr esi, cl
and esi, edi
mov ecx, eax
shl edx, cl
or edx, esi
mov esi, ebp
mov byte [ebp], dl
xor ecx, ecx
test eax, eax
lea eax, [eax - 2]
sete cl
mov edx, 6
cmove eax, edx
add esi, ecx
mov edx, dword [esp + 4]
add edx, 0xffffffff
je case.0x5276c0.253
mov dword [esp + 4], edx
mov ebp, esi
movzx edi, byte [esi]
mov edx, edi
mov ecx, eax
shr edx, cl
and edx, 3
cmp edx, dword [esp]
jne 0x52862a
mov cl, 6
sub cl, al
mov esi, 0x3f3f
shr esi, cl
movzx edx, word [ebx + 0x168]
mov ecx, eax
shl edx, cl
and esi, edi
movzx edx, dl
jmp 0x528649
cmp dword [esp + 0xc], 0
je 0x529527
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
mov dword [esp], eax
mov eax, 4
jmp 0x528714
mov ecx, edx
shl ecx, 4
or ecx, edx
mov edx, dword [esp + 0xc]
movzx edx, byte [edx + ecx]
shr edx, 4
mov cl, 4
sub cl, al
mov esi, 0xf0f
shr esi, cl
and esi, edi
mov ecx, eax
shl edx, cl
or edx, esi
mov esi, ebp
mov byte [ebp], dl
xor ecx, ecx
test eax, eax
lea eax, [eax - 4]
sete cl
mov edx, 4
cmove eax, edx
add esi, ecx
mov edx, dword [esp + 4]
add edx, 0xffffffff
je case.0x5276c0.253
mov dword [esp + 4], edx
mov ebp, esi
movzx edi, byte [esi]
mov edx, edi
mov ecx, eax
shr edx, cl
and edx, 0xf
cmp edx, dword [esp]
jne 0x5286c9
mov cl, 4
sub cl, al
mov esi, 0xf0f
shr esi, cl
movzx edx, word [ebx + 0x168]
mov ecx, eax
shl edx, cl
and esi, edi
movzx edx, dl
jmp 0x5286ec
cmp dword [esp + 0xc], 0
je 0x529594
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
cmp edx, 1
je 0x5297dc
mov ecx, edx
and ecx, 0xfffffffe
jmp 0x528788
movzx edx, byte [ebx + 0x168]
mov byte [esi + 1], dl
add esi, 2
add ecx, 0xfffffffe
je 0x5297d8
movzx edx, byte [esi]
cmp ax, dx
jne 0x528799
movzx edx, byte [ebx + 0x168]
jmp 0x5287a4
movzx edx, dx
mov edi, dword [esp + 0xc]
movzx edx, byte [edi + edx]
mov byte [esi], dl
movzx edx, byte [esi + 1]
cmp ax, dx
je 0x528772
movzx edx, dx
mov edi, dword [esp + 0xc]
movzx edx, byte [edi + edx]
jmp 0x528779
lea eax, [ebx + 0x168]
mov dword [esp + 0xc], eax
cmp dword [esp + 0x20], 0
je 0x5295c8
test edx, edx
je case.0x5276c0.253
movzx ecx, word [ebx + 0x1b8]
xor ebp, ebp
jmp 0x52880b
movzx eax, word [edi]
rol ax, 8
mov esi, dword [esp]
mov word [esi + ebp*2], ax
add ebp, 1
cmp dword [esp + 4], ebp
je case.0x5276c0.253
movzx eax, byte [esi + ebp*2]
mov edx, eax
shl edx, 8
movzx esi, byte [esi + ebp*2 + 1]
or edx, esi
mov edi, dword [esp + 0xc]
cmp edx, ecx
je 0x5287f0
mov edx, ecx
mov ecx, dword [esp + 8]
shr esi, cl
mov ecx, edx
add eax, eax
mov edx, dword [esp + 0x20]
add eax, dword [edx + esi*4]
mov edi, eax
jmp 0x5287f0
test edx, edx
je case.0x5274f0.1
add ebx, 6
mov esi, dword [esp + 0xc]
nop dword [eax]
movzx eax, byte [ebx - 4]
mov ebp, edx
mov edx, dword [esp + 0x10]
mov ecx, edx
shr eax, cl
mov eax, dword [esi + eax*4]
movzx ecx, byte [ebx - 5]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov word [ebx - 5], ax
movzx eax, byte [ebx - 2]
mov ecx, edx
shr eax, cl
mov eax, dword [esi + eax*4]
movzx ecx, byte [ebx - 3]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov word [ebx - 3], ax
movzx eax, byte [ebx]
mov ecx, edx
mov edx, ebp
shr eax, cl
mov eax, dword [esi + eax*4]
movzx ecx, byte [ebx - 1]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov word [ebx - 1], ax
add ebx, 6
add edx, 0xffffffff
jne 0x528850
jmp case.0x5274f0.1
test edx, edx
je case.0x5274f0.1
cmp edx, 1
je 0x528909
mov eax, edx
and eax, 0xfffffffe
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movzx edx, byte [ebp + 1]
shr edx, cl
mov ebx, dword [esi + edx*4]
movzx edx, byte [ebp]
movzx edx, word [ebx + edx*2]
rol dx, 8
mov word [ebp], dx
movzx edx, byte [ebp + 5]
shr edx, cl
mov ebx, dword [esi + edx*4]
movzx edx, byte [ebp + 4]
movzx edx, word [ebx + edx*2]
rol dx, 8
mov word [ebp + 4], dx
add ebp, 8
add eax, 0xfffffffe
jne 0x5288cf
test byte [esp], 1
je case.0x5274f0.1
movzx eax, byte [ebp + 1]
mov ecx, dword [esp + 0x10]
shr eax, cl
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + eax*4]
movzx ecx, byte [ebp]
movzx eax, word [eax + ecx*2]
rol ax, 8
mov word [ebp], ax
jmp case.0x5274f0.1
test edx, edx
je case.0x5274f0.1
xor eax, eax
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
nop dword [eax + eax]
movzx edx, byte [ebx + eax*8 + 2]
mov ecx, ebp
shr edx, cl
mov ecx, dword [esi + edx*4]
movzx edx, byte [ebx + eax*8 + 1]
movzx ecx, word [ecx + edx*2]
rol cx, 8
mov word [ebx + eax*8 + 1], cx
movzx edx, byte [ebx + eax*8 + 4]
mov ecx, ebp
shr edx, cl
mov ecx, dword [esi + edx*4]
movzx edx, byte [ebx + eax*8 + 3]
movzx ecx, word [ecx + edx*2]
rol cx, 8
mov word [ebx + eax*8 + 3], cx
movzx edx, byte [ebx + eax*8 + 6]
mov ecx, ebp
shr edx, cl
mov ecx, dword [esi + edx*4]
movzx edx, byte [ebx + eax*8 + 5]
movzx ecx, word [ecx + edx*2]
rol cx, 8
mov word [ebx + eax*8 + 5], cx
add eax, 1
cmp dword [esp], eax
jne 0x528950
jmp case.0x5274f0.1
movzx ebx, byte [esi + 1]
shr ebx, cl
mov ebx, dword [edi + ebx*4]
movzx ebp, byte [esi]
movzx ebx, word [ebx + ebp*2]
rol bx, 8
mov word [esi], bx
lea ebx, [eax - 1]
add esi, edx
cmp eax, 1
je 0x528a2d
add esi, 1
lea eax, [edx + edx]
mov dword [esp + 4], eax
nop word cs:[eax + eax]
nop dword [eax]
movzx ebp, byte [esi]
shr ebp, cl
mov ebp, dword [edi + ebp*4]
movzx eax, byte [esi - 1]
movzx eax, word [ebp + eax*2]
rol ax, 8
mov word [esi - 1], ax
movzx eax, byte [esi + edx]
shr eax, cl
mov eax, dword [edi + eax*4]
movzx ebp, byte [esi + edx - 1]
movzx eax, word [eax + ebp*2]
rol ax, 8
mov word [esi + edx - 1], ax
add esi, dword [esp + 4]
add ebx, 0xfffffffe
jne 0x5289f0
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx + 0x78]
mov edi, dword [esp + 0x70]
test eax, 0x4000000
je 0x528aae
cmp byte [edi + 9], 0x10
jne 0x528aae
mov esi, dword [edi + 4]
test esi, esi
jle 0x528a98
mov eax, dword [ebx + 0x120]
add eax, 1
add esi, eax
xor edx, edx
nop dword [eax]
movzx ebx, byte [eax + edx*2]
movzx edi, byte [eax + edx*2 + 1]
sub edi, ebx
mov ecx, edi
shl ecx, 0x10
sub ecx, edi
add ecx, 0x7fff80
shr ecx, 0x18
add cl, bl
mov byte [eax + edx], cl
lea ecx, [eax + edx*2]
add ecx, 2
add edx, 1
cmp ecx, esi
jb 0x528a60
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx + 0x78]
mov edi, dword [esp + 0x70]
mov byte [edi + 9], 8
movzx ecx, byte [edi + 0xa]
mov edx, ecx
shl dl, 3
mov byte [edi + 0xb], dl
imul ecx, dword [edi]
mov dword [edi + 4], ecx
test eax, 0x400
je 0x528afc
cmp byte [edi + 9], 0x10
jne 0x528afc
mov ecx, dword [edi + 4]
test ecx, ecx
jle 0x528ae6
mov eax, dword [ebx + 0x120]
add eax, 1
add ecx, eax
mov edx, eax
nop
movzx ebx, byte [edx]
mov byte [eax], bl
add eax, 1
add edx, 2
cmp edx, ecx
jb 0x528ad0
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx + 0x78]
mov byte [edi + 9], 8
movzx ecx, byte [edi + 0xa]
mov edx, ecx
shl dl, 3
mov byte [edi + 0xb], dl
imul ecx, dword [edi]
mov dword [edi + 4], ecx
test al, 0x40
je 0x528c22
cmp byte [edi + 9], 8
jne 0x528c11
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x120]
mov edx, dword [eax + 0x200]
add ecx, 1
mov esi, dword [eax + 0x204]
mov eax, dword [edi]
mov bl, byte [edi + 8]
test edx, edx
je 0x528b88
cmp bl, 2
jne 0x528b88
test eax, eax
je 0x528bf9
xor esi, esi
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, byte [ecx + esi]
movzx ebp, byte [ecx + esi + 1]
shl ebx, 7
and ebx, 0x7c00
and ebp, 0xf8
lea ebx, [ebx + ebp*4]
movzx ebp, byte [ecx + esi + 2]
shr ebp, 3
or ebp, ebx
movzx ebx, byte [edx + ebp]
mov byte [ecx + edi], bl
add edi, 1
add esi, 3
cmp eax, edi
jne 0x528b50
jmp 0x528bd3
test edx, edx
je 0x5290ba
cmp bl, 6
jne 0x5290ba
test eax, eax
je 0x528bf9
xor esi, esi
nop
movzx edi, byte [ecx + esi*4]
movzx ebx, byte [ecx + esi*4 + 1]
movzx ebp, byte [ecx + esi*4 + 2]
shl edi, 7
and edi, 0x7c00
and ebx, 0xf8
lea edi, [edi + ebx*4]
shr ebp, 3
or ebp, edi
movzx ebx, byte [edx + ebp]
mov byte [ecx + esi], bl
add esi, 1
cmp eax, esi
jne 0x528ba0
mov edi, dword [esp + 0x70]
movzx ecx, byte [edi + 9]
mov byte [edi + 8], 3
mov byte [edi + 0xa], 1
mov byte [edi + 0xb], cl
cmp ecx, 8
jae 0x528c08
imul eax, ecx
add eax, 7
shr eax, 3
mov dword [edi + 4], eax
jmp 0x528c11
mov byte [edi + 8], 3
mov word [edi + 0xa], 0x801
mov ecx, 8
shr ecx, 3
imul ecx, eax
mov dword [edi + 4], ecx
cmp dword [edi + 4], 0
je 0x52a249
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx + 0x78]
test eax, 0x200
je 0x528c7d
cmp byte [edi + 9], 8
jne 0x528c7d
cmp byte [edi + 8], 3
je 0x528c7d
mov ecx, dword [edi + 4]
test ecx, ecx
jle 0x528c6b
mov eax, dword [ebx + 0x120]
lea edx, [eax + 1]
add edx, ecx
add edx, ecx
add eax, ecx
nop dword [eax + eax]
movzx ecx, byte [eax]
mov byte [edx - 1], cl
mov byte [edx - 2], cl
add edx, 0xfffffffe
lea ecx, [eax - 1]
cmp edx, eax
mov eax, ecx
ja 0x528c50
mov ecx, dword [edi + 4]
mov eax, dword [ebx + 0x78]
add ecx, ecx
mov dword [edi + 4], ecx
mov byte [edi + 9], 0x10
mov cl, byte [edi + 0xa]
shl cl, 4
mov byte [edi + 0xb], cl
test eax, 0x4000
je 0x528c9d
test byte [ebx + 0x71], 8
je 0x528c9d
mov edx, dword [ebx + 0x120]
add edx, 1
mov ecx, edi
call fcn.0052a7d0
mov eax, dword [ebx + 0x78]
test al, 0x20
je 0x528cb7
mov eax, dword [ebx + 0x120]
add eax, 1
push eax
push edi
call fcn.0052ac70
add esp, 8
mov eax, dword [ebx + 0x78]
test eax, 0x80000
je 0x528dff
mov eax, dword [ebx + 0x120]
add eax, 1
mov ecx, dword [edi]
mov dl, byte [edi + 8]
cmp dl, 4
je 0x528d40
cmp dl, 6
jne 0x528dff
cmp byte [edi + 9], 8
jne 0x528d9d
test ecx, ecx
je 0x528dff
add eax, dword [edi + 4]
lea esi, [ecx - 1]
mov edx, ecx
and edx, 3
cmp esi, 3
jb 0x528d24
and ecx, 0xfffffffc
nop word cs:[eax + eax]
nop dword [eax]
not byte [eax - 1]
not byte [eax - 5]
not byte [eax - 9]
not byte [eax - 0xd]
add eax, 0xfffffff0
add ecx, 0xfffffffc
jne 0x528d10
test edx, edx
je 0x528dff
neg edx
xor ecx, ecx
not byte [eax + ecx*4 - 1]
add ecx, 0xffffffff
cmp edx, ecx
jne 0x528d30
jmp 0x528dff
cmp byte [edi + 9], 8
jne 0x528dc6
test ecx, ecx
je 0x528dff
add eax, dword [edi + 4]
lea esi, [ecx - 1]
mov edx, ecx
and edx, 3
cmp esi, 3
jb 0x528d84
and ecx, 0xfffffffc
nop word cs:[eax + eax]
nop
not byte [eax - 1]
not byte [eax - 3]
not byte [eax - 5]
not byte [eax - 7]
add eax, 0xfffffff8
add ecx, 0xfffffffc
jne 0x528d70
test edx, edx
je 0x528dff
neg edx
xor ecx, ecx
nop dword [eax]
not byte [eax + ecx*2 - 1]
add ecx, 0xffffffff
cmp edx, ecx
jne 0x528d90
jmp 0x528dff
test ecx, ecx
je 0x528dff
add eax, dword [edi + 4]
cmp ecx, 1
je 0x528df4
mov edx, ecx
and edx, 0xfffffffe
nop
not byte [eax - 1]
not byte [eax - 2]
not byte [eax - 9]
not byte [eax - 0xa]
add eax, 0xfffffff0
add edx, 0xfffffffe
jne 0x528db0
jmp 0x528df4
test ecx, ecx
je 0x528dff
add eax, dword [edi + 4]
cmp ecx, 1
je 0x528df4
mov edx, ecx
and edx, 0xfffffffe
nop word [eax + eax]
not byte [eax - 1]
not byte [eax - 2]
not byte [eax - 5]
not byte [eax - 6]
add eax, 0xfffffff8
add edx, 0xfffffffe
jne 0x528de0
test cl, 1
je 0x528dff
not byte [eax - 1]
not byte [eax - 2]
mov edx, dword [ebx + 0x78]
test dl, 8
je 0x528ffc
movzx ebx, byte [edi + 8]
cmp ebx, 3
je 0x528ff8
mov esi, dword [esp + 0x6c]
mov eax, dword [esi + 0x120]
mov dword [esp + 8], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x3c], 0
movzx ecx, byte [edi + 9]
test bl, 2
jne 0x528e54
mov al, byte [esi + 0x1a8]
mov edi, 1
jmp 0x528e7d
mov al, byte [esi + 0x1a5]
movzx edi, byte [esi + 0x1a6]
mov ebp, ecx
sub ebp, edi
mov dword [esp + 0x34], ebp
movzx esi, byte [esi + 0x1a7]
mov ebp, ecx
sub ebp, esi
mov dword [esp + 0x38], ebp
mov edi, 3
mov byte [esp + 4], al
movzx ebp, al
mov esi, ecx
sub esi, ebp
mov ebp, ecx
mov ecx, esi
test bl, 4
mov dword [esp], ebp
je 0x528ea8
mov esi, dword [esp + 0x6c]
movzx ebx, byte [esi + 0x1a9]
sub ebp, ebx
mov dword [esp + edi*4 + 0x30], ebp
add edi, 1
mov eax, dword [esp + 8]
mov ebp, ecx
test ecx, ecx
setg bl
cmp byte [esp + 4], 0
setne bh
xor ecx, ecx
and bh, bl
cmove ebp, ecx
mov esi, ebp
mov dword [esp + 4], ebp
mov dword [esp + 0x30], ebp
movzx esi, bh
cmp edi, 1
je 0x528efd
mov ebp, dword [esp + 0x34]
test ebp, ebp
setg bh
cmp ebp, dword [esp]
setl bl
test bh, bl
cmovne ecx, ebp
mov dword [esp + 0x34], ecx
mov ebp, 1
cmovne esi, ebp
cmp edi, 2
jne 0x52914b
mov ebp, edi
test esi, esi
je 0x528ff4
mov ecx, dword [esp]
add ecx, 0xfffffffe
ror ecx, 1
cmp ecx, 7
ja case.0x528f1d.2
mov esi, ebp
lea edx, [eax + 1]
jmp dword [ecx*4 + 0x5705c8]
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + 4]
test ebp, ebp
jle case.0x528f1d.2
lea ecx, [eax + ebp]
add ecx, 1
lea esi, [eax + 2]
cmp ecx, esi
mov ebx, esi
mov dword [esp + 4], ecx
cmova ebx, ecx
mov ecx, eax
not ecx
mov dword [esp], ecx
add ebx, ecx
mov ecx, edx
cmp ebx, 8
jb 0x5299d6
xor edi, edi
cmp ebx, 0x20
jb 0x5298d3
mov dword [esp + 8], ebp
mov edi, ebx
and edi, 0xffffffe0
lea ecx, [edi - 0x20]
mov ebp, ecx
shr ebp, 5
add ebp, 1
test ecx, ecx
mov dword [esp + 0xc], ebp
je 0x529885
and ebp, 0xfffffffe
xor ecx, ecx
movdqa xmm0, xmmword [str.UUUUUUUUUUUUUUUUUUUUUUUU]
movdqu xmm1, xmmword [eax + ecx + 1]
movdqu xmm2, xmmword [eax + ecx + 0x11]
psrlw xmm1, 1
psrlw xmm2, 1
pand xmm1, xmm0
pand xmm2, xmm0
movdqu xmmword [eax + ecx + 1], xmm1
movdqu xmmword [eax + ecx + 0x11], xmm2
movdqu xmm1, xmmword [eax + ecx + 0x21]
movdqu xmm2, xmmword [eax + ecx + 0x31]
psrlw xmm1, 1
psrlw xmm2, 1
pand xmm1, xmm0
pand xmm2, xmm0
movdqu xmmword [eax + ecx + 0x21], xmm1
movdqu xmmword [eax + ecx + 0x31], xmm2
add ecx, 0x40
add ebp, 0xfffffffe
jne 0x528f93
jmp 0x529887
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
test dl, 4
je 0x529a04
mov al, byte [edi + 9]
cmp al, 7
ja 0x529a04
mov ebx, dword [ebx + 0x120]
add ebx, 1
mov edx, dword [edi]
cmp al, 4
je 0x5291a5
cmp al, 2
je 0x52921c
cmp al, 1
jne 0x529499
test edx, edx
je 0x529499
mov ecx, edx
neg ecx
and ecx, 7
lea eax, [ebx + edx]
mov edi, edx
add edx, 0xffffffff
mov ebp, edx
shr ebp, 3
add ebp, ebx
test edx, edx
mov dword [esp + 4], edi
je 0x52944a
and edi, 0xfffffffe
xor ebx, ebx
mov esi, ebp
nop word cs:[eax + eax]
nop
movzx edx, byte [ebp]
shr edx, cl
and dl, 1
mov byte [eax - 1], dl
xor edx, edx
cmp ecx, 7
lea ecx, [ecx + 1]
sete dl
cmove ecx, ebx
sub esi, edx
neg edx
movzx edx, byte [ebp + edx]
shr edx, cl
and dl, 1
mov byte [eax - 2], dl
add eax, 0xfffffffe
xor edx, edx
cmp ecx, 7
lea ecx, [ecx + 1]
sete dl
cmove ecx, ebx
sub esi, edx
mov ebp, esi
add edi, 0xfffffffe
jne 0x529070
jmp 0x52944c
test esi, esi
je 0x528c11
cmp bl, 3
jne 0x528c11
test eax, eax
je 0x528c11
lea edi, [eax - 1]
mov edx, eax
and edx, 3
cmp edi, 3
jb 0x529122
and eax, 0xfffffffc
nop word cs:[eax + eax]
nop dword [eax]
movzx edi, byte [ecx]
movzx ebx, byte [esi + edi]
mov byte [ecx], bl
movzx edi, byte [ecx + 1]
movzx ebx, byte [esi + edi]
mov byte [ecx + 1], bl
movzx edi, byte [ecx + 2]
movzx ebx, byte [esi + edi]
mov byte [ecx + 2], bl
movzx edi, byte [ecx + 3]
movzx ebx, byte [esi + edi]
mov byte [ecx + 3], bl
add ecx, 4
add eax, 0xfffffffc
jne 0x5290f0
test edx, edx
mov edi, dword [esp + 0x70]
je 0x528c11
xor eax, eax
movzx edi, byte [ecx + eax]
movzx ebx, byte [esi + edi]
mov edi, dword [esp + 0x70]
mov byte [ecx + eax], bl
add eax, 1
cmp edx, eax
jne 0x529130
jmp 0x528c11
mov ebx, dword [esp + 0x38]
test ebx, ebx
setg byte [esp + 8]
cmp ebx, dword [esp]
setl byte [esp + 0xc]
mov cl, byte [esp + 0xc]
test byte [esp + 8], cl
mov ecx, 0
cmove ebx, ecx
mov dword [esp + 0x38], ebx
cmovne esi, ebp
mov ebp, edi
cmp edi, 3
je 0x528eff
mov edi, dword [esp + 0x3c]
test edi, edi
setg bh
cmp edi, dword [esp]
setl bl
test bh, bl
cmovne ecx, edi
mov dword [esp + 0x3c], ecx
mov ecx, 1
cmovne esi, ecx
jmp 0x528eff
test edx, edx
je 0x529499
lea ecx, [edx*4]
and ecx, 4
lea esi, [ebx + edx]
lea eax, [edx - 1]
mov edi, eax
shr edi, 1
add edi, ebx
test eax, eax
je 0x529461
mov ebp, edx
mov ebx, edx
and ebx, 0xfffffffe
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edi]
shr eax, cl
and al, 0xf
mov byte [esi - 1], al
xor edx, edx
xor eax, eax
cmp ecx, 4
setne dl
sete al
sub edi, eax
mov ch, byte [edi]
sub edi, edx
mov cl, dl
shl cl, 2
shr ch, cl
and ch, 0xf
mov byte [esi - 2], ch
add esi, 0xfffffffe
shl eax, 2
mov ecx, eax
add ebx, 0xfffffffe
jne 0x5291e0
jmp 0x529465
test edx, edx
je 0x529499
lea ecx, [edx + edx]
add ecx, 6
not ecx
and ecx, 6
lea eax, [ebx + edx]
mov edi, edx
add edx, 0xffffffff
mov ebp, edx
shr ebp, 2
add ebp, ebx
test edx, edx
mov dword [esp + 4], edi
je 0x52947f
and edi, 0xfffffffe
xor ebx, ebx
mov esi, ebp
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx edx, byte [ebp]
shr edx, cl
and dl, 3
mov byte [eax - 1], dl
xor edx, edx
cmp ecx, 6
lea ecx, [ecx + 2]
sete dl
cmove ecx, ebx
sub esi, edx
neg edx
movzx edx, byte [ebp + edx]
shr edx, cl
and dl, 3
mov byte [eax - 2], dl
add eax, 0xfffffffe
xor edx, edx
cmp ecx, 6
lea ecx, [ecx + 2]
sete dl
cmove ecx, ebx
sub esi, edx
mov ebp, esi
add edi, 0xfffffffe
jne 0x529260
jmp 0x529481
mov ecx, dword [esp + 0x70]
mov ebx, dword [ecx + 4]
mov edi, 0xf
mov ecx, dword [esp + 4]
shr edi, cl
test ebx, ebx
jle case.0x528f1d.2
mov esi, edi
shl esi, 4
or esi, edi
lea edi, [ebx + eax]
add edi, 1
lea ecx, [eax + 2]
cmp edi, ecx
mov dword [esp], ecx
mov dword [esp + 8], edi
cmova ecx, edi
mov edi, eax
not edi
mov dword [esp + 0xc], edi
add ecx, edi
mov edi, edx
cmp ecx, 8
jb 0x529999
xor ebp, ebp
movss xmm7, dword [esp + 4]
movd xmm0, esi
cmp ecx, 0x10
jae 0x5296cd
mov eax, dword [esp + 8]
mov ecx, dword [esp]
cmp eax, ecx
cmova ecx, eax
add ecx, dword [esp + 0xc]
mov eax, ecx
and eax, 0xfffffff8
lea edi, [edx + eax]
pshufd xmm1, xmm0, 0
pxor xmm2, xmm2
pxor xmm3, xmm3
movss xmm3, xmm7
movq xmm0, qword [edx + ebp]
punpcklbw xmm0, xmm2
movdqa xmm4, xmm0
punpckhwd xmm4, xmm2
punpcklwd xmm0, xmm2
psrld xmm0, xmm3
psrld xmm4, xmm3
pand xmm4, xmm1
pand xmm0, xmm1
packuswb xmm0, xmm4
packuswb xmm0, xmm0
movq qword [edx + ebp], xmm0
add ebp, 8
cmp eax, ebp
jne 0x529333
cmp ecx, eax
jne 0x529999
jmp case.0x528f1d.2
mov ecx, dword [esp + 0x70]
mov edi, dword [ecx + 4]
test edi, edi
jle case.0x528f1d.2
movzx ebx, byte [edx]
mov ecx, dword [esp + 4]
shr ebx, cl
mov byte [edx], bl
cmp edi, 1
je case.0x528f1d.2
lea ebp, [edi + eax]
add ebp, 1
add eax, 2
xor ebx, ebx
cmp esi, 2
setge bl
xor edi, edi
nop
movzx ecx, byte [esp + ebx*4 + 0x30]
movzx edx, byte [eax]
shr edx, cl
add ebx, 1
cmp ebx, esi
cmovge ebx, edi
mov byte [eax], dl
add eax, 1
cmp eax, ebp
jb 0x5293b0
jmp case.0x528f1d.2
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 4]
test edx, edx
jle case.0x528f1d.2
mov edi, esi
movzx esi, word [eax + 1]
shl esi, 0x10
bswap esi
mov ecx, dword [esp + 4]
shr esi, cl
rol si, 8
mov word [eax + 1], si
cmp edx, 3
jl case.0x528f1d.2
mov esi, edi
add edx, eax
add edx, 1
add eax, 3
xor ebx, ebx
cmp edi, 2
setge bl
xor edi, edi
nop word cs:[eax + eax]
nop
movzx ecx, byte [esp + ebx*4 + 0x30]
movzx ebp, word [eax]
shl ebp, 0x10
bswap ebp
shr ebp, cl
add ebx, 1
cmp ebx, esi
cmovge ebx, edi
rol bp, 8
mov word [eax], bp
add eax, 2
cmp eax, edx
jb 0x529420
jmp case.0x528f1d.2
mov esi, ebp
mov edx, dword [esp + 4]
test dl, 1
je 0x529499
mov edi, edx
movzx edx, byte [esi]
shr edx, cl
and dl, 1
jmp 0x529494
mov ebp, edx
mov eax, ecx
mov edx, ebp
test dl, 1
je 0x529499
mov ebx, edx
movzx edx, byte [edi]
mov ecx, eax
shr edx, cl
and dl, 0xf
mov byte [esi - 1], dl
mov edx, ebx
jmp 0x529499
mov esi, ebp
mov edx, dword [esp + 4]
test dl, 1
je 0x529499
mov edi, edx
movzx edx, byte [esi]
shr edx, cl
and dl, 3
mov byte [eax - 1], dl
mov edx, edi
mov edi, dword [esp + 0x70]
mov byte [edi + 9], 8
movzx eax, byte [edi + 0xa]
imul edx, eax
shl al, 3
mov byte [edi + 0xb], al
mov dword [edi + 4], edx
mov ebx, dword [esp + 0x6c]
jmp 0x529a04
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
mov dword [esp], eax
mov eax, 6
jmp 0x5294f0
xor ecx, ecx
test eax, eax
lea eax, [eax - 2]
sete cl
mov edi, 6
cmove eax, edi
add esi, ecx
add edx, 0xffffffff
je case.0x5276c0.253
movzx edi, byte [esi]
mov ebp, edi
mov ecx, eax
shr ebp, cl
and ebp, 3
cmp ebp, dword [esp]
jne 0x5294d3
mov cl, 6
sub cl, al
mov ebp, 0x3f3f
shr ebp, cl
mov dword [esp + 4], edx
movzx edx, word [ebx + 0x168]
mov ecx, eax
shl edx, cl
and ebp, edi
or edx, ebp
mov byte [esi], dl
mov edx, dword [esp + 4]
jmp 0x5294d3
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
mov dword [esp], eax
mov eax, 4
jmp 0x52955d
xor ecx, ecx
test eax, eax
lea eax, [eax - 4]
sete cl
mov edi, 4
cmove eax, edi
add esi, ecx
add edx, 0xffffffff
je case.0x5276c0.253
movzx edi, byte [esi]
mov ebp, edi
mov ecx, eax
shr ebp, cl
and ebp, 0xf
cmp ebp, dword [esp]
jne 0x529540
mov cl, 4
sub cl, al
mov ebp, 0xf0f
shr ebp, cl
mov dword [esp + 4], edx
movzx edx, word [ebx + 0x168]
mov ecx, eax
shl edx, cl
and ebp, edi
or edx, ebp
mov byte [esi], dl
mov edx, dword [esp + 4]
jmp 0x529540
test edx, edx
je case.0x5276c0.253
movzx eax, word [ebx + 0x1b8]
cmp edx, 1
jne 0x5297fe
test byte [esp + 4], 1
je case.0x5276c0.253
movzx ecx, byte [esi]
cmp ax, cx
jne case.0x5276c0.253
jmp 0x5297f1
test edx, edx
je case.0x5276c0.253
movzx ecx, word [ebx + 0x1b8]
cmp edx, 1
jne 0x529837
mov edi, dword [esp]
test dl, 1
je case.0x5276c0.253
movzx eax, word [edi]
shl eax, 0x10
bswap eax
cmp eax, ecx
jne case.0x5276c0.253
mov eax, dword [esp + 0xc]
movzx eax, word [eax]
rol ax, 8
mov word [edi], ax
jmp case.0x5276c0.253
test edx, edx
je case.0x5274f0.1
xor eax, eax
movzx ecx, byte [ebp]
mov edx, ecx
and edx, 0xfffffff0
mov esi, ecx
and esi, 0xf
shr ecx, 4
or ecx, edx
mov edx, dword [esp + 4]
movzx ecx, byte [edx + ecx]
and cl, 0xf0
mov edx, esi
shl edx, 4
or edx, esi
mov esi, dword [esp + 4]
movzx edx, byte [esi + edx]
shr dl, 4
or dl, cl
mov byte [ebp], dl
add ebp, 1
add eax, 2
cmp eax, dword [esp]
jb 0x529619
jmp case.0x5274f0.1
test edx, edx
je case.0x5274f0.1
lea ecx, [edx - 1]
mov eax, edx
and eax, 3
cmp ecx, 3
jb 0x5296aa
and edx, 0xfffffffc
movzx ecx, byte [ebp]
movzx ecx, byte [esi + ecx]
mov byte [ebp], cl
movzx ecx, byte [ebp + 1]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 1], cl
movzx ecx, byte [ebp + 2]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 2], cl
movzx ecx, byte [ebp + 3]
movzx ecx, byte [esi + ecx]
mov byte [ebp + 3], cl
add ebp, 4
add edx, 0xfffffffc
jne 0x529676
test eax, eax
je case.0x5274f0.1
xor ecx, ecx
movzx edx, byte [ebp + ecx]
movzx edx, byte [esi + edx]
mov byte [ebp + ecx], dl
add ecx, 1
cmp eax, ecx
jne 0x5296b4
jmp case.0x5274f0.1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ecx
mov ebp, ecx
and ebp, 0xfffffff0
movdqu xmmword [esp + 0x40], xmm0
pshufd xmm2, xmm0, 0
lea edi, [ebp - 0x10]
mov ecx, edi
shr ecx, 4
add ecx, 1
test edi, edi
movups xmmword [esp + 0x20], xmm7
je 0x529917
mov ebx, ecx
and ebx, 0xfffffffe
xor edi, edi
pxor xmm3, xmm3
xorps xmm4, xmm4
movss xmm4, xmm7
movdqu xmm6, xmmword [eax + edi + 1]
movdqu xmm5, xmmword [eax + edi + 0x11]
movdqa xmm7, xmm6
punpcklbw xmm7, xmm3
movdqa xmm0, xmm7
punpckhwd xmm0, xmm3
punpcklwd xmm7, xmm3
punpckhbw xmm6, xmm3
movdqa xmm1, xmm6
punpckhwd xmm1, xmm3
punpcklwd xmm6, xmm3
psrld xmm6, xmm4
psrld xmm1, xmm4
psrld xmm7, xmm4
psrld xmm0, xmm4
pand xmm0, xmm2
pand xmm7, xmm2
packuswb xmm7, xmm0
pand xmm1, xmm2
pand xmm6, xmm2
packuswb xmm6, xmm1
packuswb xmm7, xmm6
movdqu xmmword [eax + edi + 1], xmm7
movdqa xmm6, xmm5
punpcklbw xmm6, xmm3
movdqa xmm1, xmm6
punpckhwd xmm1, xmm3
punpcklwd xmm6, xmm3
punpckhbw xmm5, xmm3
movdqa xmm0, xmm5
punpckhwd xmm0, xmm3
punpcklwd xmm5, xmm3
psrld xmm5, xmm4
psrld xmm0, xmm4
psrld xmm6, xmm4
psrld xmm1, xmm4
pand xmm1, xmm2
pand xmm6, xmm2
packuswb xmm6, xmm1
pand xmm0, xmm2
pand xmm5, xmm2
packuswb xmm5, xmm0
packuswb xmm6, xmm5
movdqu xmmword [eax + edi + 0x11], xmm6
add edi, 0x20
add ebx, 0xfffffffe
jne 0x52970f
jmp 0x529919
mov edx, dword [esp + 4]
test dl, 1
je case.0x5276c0.253
movzx ecx, byte [esi]
cmp ax, cx
jne 0x5299b6
mov al, byte [ebx + 0x168]
mov byte [esi], al
jmp case.0x5276c0.253
mov ecx, edx
and ecx, 0xfffffffe
jmp 0x529811
add esi, 2
add ecx, 0xfffffffe
je 0x5295ac
movzx edx, byte [esi]
cmp ax, dx
jne 0x529822
movzx edx, byte [ebx + 0x168]
mov byte [esi], dl
movzx edx, byte [esi + 1]
cmp ax, dx
jne 0x529805
movzx edx, byte [ebx + 0x168]
mov byte [esi + 1], dl
jmp 0x529805
mov esi, edx
and esi, 0xfffffffe
mov edi, dword [esp]
jmp 0x52984d
add edi, 4
add esi, 0xfffffffe
je 0x5295e3
movzx eax, word [edi]
shl eax, 0x10
bswap eax
cmp eax, ecx
jne 0x529867
mov eax, dword [esp + 0xc]
movzx eax, word [eax]
rol ax, 8
mov word [edi], ax
movzx eax, word [edi + 2]
shl eax, 0x10
bswap eax
cmp eax, ecx
jne 0x529841
mov eax, dword [esp + 0xc]
movzx eax, word [eax]
rol ax, 8
mov word [edi + 2], ax
jmp 0x529841
xor ecx, ecx
test byte [esp + 0xc], 1
je 0x5298be
movdqu xmm0, xmmword [edx + ecx]
movdqu xmm1, xmmword [edx + ecx + 0x10]
psrlw xmm0, 1
psrlw xmm1, 1
movdqa xmm2, xmmword [str.UUUUUUUUUUUUUUUUUUUUUUUU]
pand xmm0, xmm2
pand xmm1, xmm2
movdqu xmmword [edx + ecx], xmm0
movdqu xmmword [edx + ecx + 0x10], xmm1
cmp ebx, edi
mov ebp, dword [esp + 8]
je case.0x528f1d.2
test bl, 0x18
je 0x5299d2
mov eax, dword [esp + 4]
cmp eax, esi
cmova esi, eax
add esi, dword [esp]
mov eax, esi
and eax, 0xfffffff8
lea ecx, [edx + eax]
movdqa xmm0, xmmword [0x570540]
nop
movq xmm1, qword [edx + edi]
psrlw xmm1, 1
pand xmm1, xmm0
movq qword [edx + edi], xmm1
add edi, 8
cmp eax, edi
jne 0x5298f0
cmp esi, eax
jne 0x5299d6
jmp case.0x528f1d.2
xor edi, edi
test cl, 1
movups xmm7, xmmword [esp + 0x20]
je 0x529985
movdqu xmm3, xmmword [edx + edi]
pxor xmm0, xmm0
movdqa xmm4, xmm3
punpcklbw xmm4, xmm0
movdqa xmm6, xmm4
punpckhwd xmm6, xmm0
punpcklwd xmm4, xmm0
punpckhbw xmm3, xmm0
movdqa xmm5, xmm3
punpckhwd xmm5, xmm0
punpcklwd xmm3, xmm0
movss xmm0, xmm7
psrld xmm3, xmm0
psrld xmm5, xmm0
psrld xmm4, xmm0
psrld xmm6, xmm0
pand xmm6, xmm2
pand xmm4, xmm2
packuswb xmm4, xmm6
pand xmm5, xmm2
pand xmm3, xmm2
packuswb xmm3, xmm5
packuswb xmm4, xmm3
movdqu xmmword [edx + edi], xmm4
mov eax, dword [esp + 0x14]
cmp eax, ebp
mov ebx, dword [esp + 0x10]
je case.0x528f1d.2
test al, 8
jne 0x5299c7
add ebp, edx
mov edi, ebp
add edx, ebx
nop dword [eax + eax]
movzx eax, byte [edi]
mov ecx, dword [esp + 4]
shr eax, cl
and eax, esi
mov byte [edi], al
add edi, 1
cmp edi, edx
jb 0x5299a0
jmp case.0x528f1d.2
movzx eax, cx
mov ecx, dword [esp + 0xc]
mov al, byte [ecx + eax]
mov byte [esi], al
jmp case.0x5276c0.253
movdqu xmm0, xmmword [esp + 0x40]
jmp 0x52930a
add edi, edx
mov ecx, edi
add edx, ebp
nop dword [eax + eax]
movzx eax, byte [ecx]
shr al, 1
and al, 0x55
mov byte [ecx], al
add ecx, 1
cmp ecx, edx
jb 0x5299e0
mov ebx, dword [esp + 0x6c]
mov edx, dword [ebx + 0x78]
mov edi, dword [esp + 0x70]
test dl, 4
jne 0x529005
cmp byte [edi + 8], 3
jne 0x529a1d
cmp dword [ebx + 0x140], 0
js 0x529a1d
push edi
push ebx
call fcn.0052b270
add esp, 8
mov ecx, dword [ebx + 0x78]
test cl, 1
jne 0x529a3a
test ecx, 0x10000
jne 0x529a58
test ecx, 0x8000
jne 0x529a7a
jmp 0x529fd9
mov eax, dword [ebx + 0x120]
add eax, 1
push eax
push edi
call fcn.0052b060
add esp, 8
mov ecx, dword [ebx + 0x78]
test ecx, 0x10000
je 0x529a2d
mov eax, dword [ebx + 0x120]
add eax, 1
push eax
push edi
call fcn.0052ae70
add esp, 8
mov ecx, dword [ebx + 0x78]
test ecx, 0x8000
je 0x529fd9
mov eax, ebx
mov ebx, dword [ebx + 0x74]
mov esi, dword [eax + 0x120]
lea edi, [esi + 1]
movzx edx, word [eax + 0x156]
mov eax, dword [esp + 0x70]
mov ebp, dword [eax]
mov dword [esp + 4], ebp
mov al, byte [eax + 8]
cmp al, 2
je 0x529af3
test al, al
jne 0x529fd9
mov eax, dword [esp + 0x70]
mov al, byte [eax + 9]
cmp al, 0x10
je 0x529ba2
cmp al, 8
jne 0x529fd9
mov eax, dword [esp + 4]
add edi, eax
test bl, 0x80
jne 0x529ca6
test eax, eax
je 0x529f0e
lea ebx, [eax - 1]
mov ebp, eax
and ebp, 3
cmp ebx, 3
jae 0x529f2b
lea esi, [edi + eax]
mov ebx, dword [esp + 0x6c]
jmp 0x529f8d
mov eax, dword [esp + 0x70]
mov al, byte [eax + 9]
cmp al, 0x10
je 0x529c2e
cmp al, 8
jne 0x529fd9
mov esi, dword [esp + 4]
lea eax, [esi + esi*2]
add edi, eax
test bl, 0x80
jne 0x529d4a
test esi, esi
mov eax, esi
je 0x529b8c
lea esi, [edi + eax]
cmp eax, 1
je 0x529b6b
mov ebx, eax
and ebx, 0xfffffffe
nop
movzx eax, byte [edi - 1]
mov byte [esi - 1], al
movzx eax, byte [edi - 2]
mov byte [esi - 2], al
movzx eax, byte [edi - 3]
mov byte [esi - 3], al
mov byte [esi - 4], dl
movzx eax, byte [edi - 4]
mov byte [esi - 5], al
movzx eax, byte [edi - 5]
mov byte [esi - 6], al
movzx eax, byte [edi - 6]
add edi, 0xfffffffa
mov byte [esi - 7], al
mov byte [esi - 8], dl
add esi, 0xfffffff8
add ebx, 0xfffffffe
jne 0x529b30
mov eax, dword [esp + 4]
test al, 1
je 0x529b8c
mov al, byte [edi - 1]
mov byte [esi - 1], al
mov al, byte [edi - 2]
mov byte [esi - 2], al
mov al, byte [edi - 3]
mov byte [esi - 3], al
mov eax, dword [esp + 4]
mov byte [esi - 4], dl
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
mov ecx, 2
mov dl, 0x20
mov dh, 4
jmp 0x529fcb
mov eax, dword [esp + 4]
lea esi, [eax + eax]
lea edi, [edi + eax*2]
test bl, 0x80
jne 0x529de9
test eax, eax
mov ebx, dword [esp + 0x6c]
je 0x529f1b
add esi, edi
cmp eax, 1
je 0x529c03
mov ebx, eax
and ebx, 0xfffffffe
nop dword [eax]
movzx eax, byte [edi - 1]
mov byte [esi - 1], al
movzx eax, byte [edi - 2]
mov byte [esi - 2], al
mov byte [esi - 3], dl
mov byte [esi - 4], dh
movzx eax, byte [edi - 3]
mov byte [esi - 5], al
movzx eax, byte [edi - 4]
add edi, 0xfffffffc
mov byte [esi - 6], al
mov byte [esi - 7], dl
mov byte [esi - 8], dh
add esi, 0xfffffff8
add ebx, 0xfffffffe
jne 0x529bd0
mov eax, dword [esp + 4]
test al, 1
je 0x529c21
mov al, byte [edi - 1]
mov byte [esi - 1], al
mov al, byte [edi - 2]
mov byte [esi - 2], al
mov eax, dword [esp + 4]
mov byte [esi - 3], dl
mov byte [esi - 4], dh
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
jmp 0x529f1f
mov ecx, dword [esp + 4]
lea eax, [ecx + ecx]
lea ebp, [eax + eax*2]
test bl, 0x80
jne 0x529e81
test ecx, ecx
mov ebx, dword [esp + 0x6c]
mov eax, ecx
mov edi, dword [esp + 0x70]
je 0x529c98
nop
movzx ecx, byte [esi + ebp]
mov byte [esi + eax*8], cl
movzx ecx, byte [esi + ebp - 1]
mov byte [esi + eax*8 - 1], cl
movzx ecx, byte [esi + ebp - 2]
mov byte [esi + eax*8 - 2], cl
movzx ecx, byte [esi + ebp - 3]
mov byte [esi + eax*8 - 3], cl
movzx ecx, byte [esi + ebp - 4]
mov byte [esi + eax*8 - 4], cl
movzx ecx, byte [esi + ebp - 5]
mov byte [esi + eax*8 - 5], cl
mov byte [esi + eax*8 - 6], dl
mov byte [esi + eax*8 - 7], dh
add ebp, 0xfffffffa
add eax, 0xffffffff
jne 0x529c50
mov eax, dword [esp + 4]
mov ecx, 3
mov dl, 0x40
mov dh, 4
jmp 0x529fcb
lea ebp, [edi + eax]
cmp eax, 2
jb 0x529eef
lea ebx, [eax - 1]
add eax, 0xfffffffe
mov ecx, ebx
and ecx, 3
cmp eax, 3
jb 0x529d16
and ebx, 0xfffffffc
mov edi, dword [esp + 4]
lea ebp, [edi + edi]
not ebp
nop
mov byte [esi + edi*2], dl
movzx eax, byte [esi + edi]
mov byte [esi + edi*2 - 1], al
mov byte [esi + edi*2 - 2], dl
movzx eax, byte [esi + edi - 1]
mov byte [esi + edi*2 - 3], al
mov byte [esi + edi*2 - 4], dl
movzx eax, byte [esi + edi - 2]
mov byte [esi + edi*2 - 5], al
mov byte [esi + edi*2 - 6], dl
movzx eax, byte [esi + edi - 3]
mov byte [esi + edi*2 - 7], al
add ebp, 8
add edi, 0xfffffffc
add ebx, 0xfffffffc
jne 0x529cd0
add edi, esi
add edi, 1
sub esi, ebp
mov ebp, esi
test ecx, ecx
je 0x529ef1
neg ecx
xor eax, eax
mov esi, ebp
nop word cs:[eax + eax]
nop
mov byte [esi - 1], dl
movzx ebx, byte [edi + eax - 1]
mov byte [esi - 2], bl
add esi, 0xfffffffe
add eax, 0xffffffff
cmp ecx, eax
jne 0x529d30
jmp 0x529ef1
lea ecx, [edi + esi]
cmp esi, 2
mov eax, esi
jb 0x529dd0
lea ebx, [eax - 1]
cmp eax, 2
je 0x529dab
mov esi, ebx
and esi, 0xfffffffe
nop word cs:[eax + eax]
nop dword [eax + eax]
mov byte [ecx - 1], dl
movzx eax, byte [edi - 1]
mov byte [ecx - 2], al
movzx eax, byte [edi - 2]
mov byte [ecx - 3], al
movzx eax, byte [edi - 3]
mov byte [ecx - 4], al
mov byte [ecx - 5], dl
movzx eax, byte [edi - 4]
mov byte [ecx - 6], al
movzx eax, byte [edi - 5]
mov byte [ecx - 7], al
movzx eax, byte [edi - 6]
add edi, 0xfffffffa
mov byte [ecx - 8], al
add ecx, 0xfffffff8
add esi, 0xfffffffe
jne 0x529d70
test bl, 1
mov eax, dword [esp + 4]
je 0x529dd0
mov byte [ecx - 1], dl
mov al, byte [edi - 1]
mov byte [ecx - 2], al
mov al, byte [edi - 2]
mov byte [ecx - 3], al
mov al, byte [edi - 3]
mov byte [ecx - 4], al
mov eax, dword [esp + 4]
add ecx, 0xfffffffc
mov byte [ecx - 1], dl
mov ecx, 2
mov dl, 0x20
mov dh, 4
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
jmp 0x529fcb
add esi, edi
cmp eax, 2
mov ebx, dword [esp + 0x6c]
jb 0x529e69
lea ecx, [eax - 1]
cmp eax, 2
je 0x529e43
mov ebx, ecx
and ebx, 0xfffffffe
nop word cs:[eax + eax]
nop dword [eax + eax]
mov byte [esi - 1], dl
mov byte [esi - 2], dh
movzx eax, byte [edi - 1]
mov byte [esi - 3], al
movzx eax, byte [edi - 2]
mov byte [esi - 4], al
mov byte [esi - 5], dl
mov byte [esi - 6], dh
movzx eax, byte [edi - 3]
mov byte [esi - 7], al
movzx eax, byte [edi - 4]
add edi, 0xfffffffc
mov byte [esi - 8], al
add esi, 0xfffffff8
add ebx, 0xfffffffe
jne 0x529e10
test cl, 1
mov ebx, dword [esp + 0x6c]
mov eax, dword [esp + 4]
je 0x529e69
mov byte [esi - 1], dl
mov byte [esi - 2], dh
mov al, byte [edi - 1]
mov byte [esi - 3], al
mov al, byte [edi - 2]
mov byte [esi - 4], al
mov eax, dword [esp + 4]
add esi, 0xfffffffc
mov byte [esi - 1], dl
mov byte [esi - 2], dh
mov ecx, 2
mov dl, 0x20
mov dh, 2
mov edi, dword [esp + 0x70]
jmp 0x529fcb
add edi, ebp
mov eax, ecx
lea ecx, [edi + ecx*2]
cmp eax, 2
mov ebx, dword [esp + 0x6c]
jb 0x529eda
add esi, ebp
lea edi, [eax - 1]
nop word cs:[eax + eax]
mov byte [ecx - 1], dl
mov byte [ecx - 2], dh
movzx eax, byte [esi]
mov byte [ecx - 3], al
movzx eax, byte [esi - 1]
mov byte [ecx - 4], al
movzx eax, byte [esi - 2]
mov byte [ecx - 5], al
movzx eax, byte [esi - 3]
mov byte [ecx - 6], al
movzx eax, byte [esi - 4]
mov byte [ecx - 7], al
movzx eax, byte [esi - 5]
mov byte [ecx - 8], al
add ecx, 0xfffffff8
add esi, 0xfffffffa
add edi, 0xffffffff
jne 0x529ea0
mov byte [ecx - 1], dl
mov byte [ecx - 2], dh
mov ecx, 3
mov dl, 0x40
mov dh, 4
mov edi, dword [esp + 0x70]
jmp 0x529f05
mov esi, ebp
mov byte [esi - 1], dl
mov ecx, 1
mov dl, 0x10
mov dh, 2
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
mov eax, dword [esp + 4]
jmp 0x529fcb
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
jmp 0x529fc2
mov edi, dword [esp + 0x70]
mov ecx, 2
mov dl, 0x20
jmp 0x529fc9
mov edi, eax
and edi, 0xfffffffc
lea ebx, [eax + eax]
not ebx
nop word cs:[eax + eax]
nop
movzx ecx, byte [esi + eax]
mov byte [esi + eax*2], cl
mov byte [esi + eax*2 - 1], dl
movzx ecx, byte [esi + eax - 1]
mov byte [esi + eax*2 - 2], cl
mov byte [esi + eax*2 - 3], dl
movzx ecx, byte [esi + eax - 2]
mov byte [esi + eax*2 - 4], cl
mov byte [esi + eax*2 - 5], dl
movzx ecx, byte [esi + eax - 3]
mov byte [esi + eax*2 - 6], cl
mov byte [esi + eax*2 - 7], dl
add ebx, 8
add eax, 0xfffffffc
add edi, 0xfffffffc
jne 0x529f40
lea edi, [esi + eax]
add edi, 1
sub esi, ebx
mov ebx, dword [esp + 0x6c]
mov eax, dword [esp + 4]
test ebp, ebp
je 0x529fbe
neg ebp
xor eax, eax
nop word cs:[eax + eax]
nop
movzx ecx, byte [edi + eax - 1]
mov byte [esi + eax*2 - 1], cl
mov byte [esi + eax*2 - 2], dl
add eax, 0xffffffff
cmp ebp, eax
jne 0x529fa0
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 4]
jmp 0x529fc2
mov edi, dword [esp + 0x70]
mov ecx, 1
mov dl, 0x10
mov dh, 2
shl eax, cl
mov byte [edi + 0xa], dh
mov byte [edi + 0xb], dl
mov dword [edi + 4], eax
mov ecx, dword [ebx + 0x78]
test ecx, 0x20000
mov ebx, dword [esp + 0x6c]
je 0x52a1af
mov edx, dword [ebx + 0x120]
lea ecx, [edx + 1]
mov eax, dword [esp + 0x70]
mov edi, dword [eax]
mov bl, byte [eax + 8]
cmp bl, 4
je 0x52a03c
cmp bl, 6
mov ebx, dword [esp + 0x6c]
jne 0x52a1af
mov eax, dword [esp + 0x70]
cmp byte [eax + 9], 8
jne 0x52a0b2
test edi, edi
je 0x52a1af
mov edx, edi
mov eax, dword [esp + 0x70]
add ecx, dword [eax + 4]
cmp edi, 1
jne 0x52a14a
mov esi, ecx
jmp 0x52a18d
cmp byte [eax + 9], 8
jne 0x52a104
test edi, edi
mov ebx, dword [esp + 0x6c]
je 0x52a1af
mov eax, dword [esp + 0x70]
add ecx, dword [eax + 4]
lea eax, [edi - 1]
mov edx, edi
and edx, 3
cmp eax, 3
jb 0x52a08c
and edi, 0xfffffffc
mov eax, edi
nop dword [eax + eax]
rol word [ecx - 2], 8
rol word [ecx - 4], 8
rol word [ecx - 6], 8
rol word [ecx - 8], 8
add ecx, 0xfffffff8
add eax, 0xfffffffc
jne 0x52a070
test edx, edx
je 0x52a1af
neg edx
xor eax, eax
nop dword [eax + eax]
rol word [ecx + eax*2 - 2], 8
add eax, 0xffffffff
cmp edx, eax
jne 0x52a0a0
jmp 0x52a1af
test edi, edi
je 0x52a1af
mov ebp, edi
neg ebp
mov eax, dword [esp + 0x70]
add edx, dword [eax + 4]
xor ecx, ecx
nop word [eax + eax]
movzx eax, word [edx + ecx*8 - 1]
movzx esi, word [edx + ecx*8 - 3]
mov word [edx + ecx*8 - 1], si
movzx esi, word [edx + ecx*8 - 7]
movzx edi, word [edx + ecx*8 - 5]
mov word [edx + ecx*8 - 3], di
mov word [edx + ecx*8 - 5], si
mov word [edx + ecx*8 - 7], ax
add ecx, 0xffffffff
cmp ebp, ecx
jne 0x52a0d0
jmp 0x52a1af
test edi, edi
mov ebx, dword [esp + 0x6c]
je 0x52a1af
mov eax, dword [esp + 0x70]
add ecx, dword [eax + 4]
cmp edi, 1
mov eax, edi
je 0x52a140
mov edx, eax
and edx, 0xfffffffe
nop word cs:[eax + eax]
nop dword [eax]
rol dword [ecx - 4], 0x10
rol dword [ecx - 8], 0x10
add ecx, 0xfffffff8
add edx, 0xfffffffe
jne 0x52a130
test al, 1
je 0x52a1af
rol dword [ecx - 4], 0x10
jmp 0x52a1af
and edx, 0xfffffffe
nop dword [eax]
movzx ebx, byte [ecx - 1]
mov bh, byte [ecx - 2]
mov byte [ecx - 1], bh
mov bh, byte [ecx - 3]
mov byte [ecx - 2], bh
mov bh, byte [ecx - 4]
mov byte [ecx - 3], bh
mov byte [ecx - 4], bl
movzx ebx, byte [ecx - 5]
mov bh, byte [ecx - 6]
mov byte [ecx - 5], bh
mov bh, byte [ecx - 8]
movzx eax, byte [ecx - 7]
mov byte [ecx - 6], al
lea esi, [ecx - 8]
mov byte [ecx - 7], bh
mov byte [ecx - 8], bl
mov ecx, esi
add edx, 0xfffffffe
jne 0x52a150
mov eax, edi
test al, 1
mov ebx, dword [esp + 0x6c]
je 0x52a1af
mov al, byte [esi - 1]
mov cl, byte [esi - 2]
mov byte [esi - 1], cl
mov cl, byte [esi - 4]
mov dl, byte [esi - 3]
mov byte [esi - 2], dl
mov byte [esi - 3], cl
mov byte [esi - 4], al
mov eax, dword [ebx + 0x78]
test al, 0x10
mov esi, dword [esp + 0x70]
je 0x52a1d0
mov eax, dword [ebx + 0x120]
add eax, 1
push eax
push esi
call fcn.0052ae00
add esp, 8
mov eax, dword [ebx + 0x78]
test eax, 0x100000
je 0x52a22b
mov eax, dword [ebx + 0x60]
test eax, eax
je 0x52a1ef
mov ecx, dword [ebx + 0x120]
add ecx, 1
push ecx
push esi
push ebx
call eax
add esp, 0xc
mov al, byte [ebx + 0x6c]
test al, al
je 0x52a1f9
mov byte [esi + 9], al
mov al, byte [ebx + 0x6d]
test al, al
je 0x52a205
mov byte [esi + 0xa], al
jmp 0x52a208
mov al, byte [esi + 0xa]
mul byte [esi + 9]
mov byte [esi + 0xb], al
movzx edx, al
mov ecx, dword [esi]
cmp al, 8
jb 0x52a21f
shr edx, 3
imul ecx, edx
jmp 0x52a228
imul ecx, edx
add ecx, 7
shr ecx, 3
mov dword [esi + 4], ecx
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
push str.NULL_row_buffer
push ecx
call fcn.00522ad0
push str.Uninitialized_row
push ecx
call fcn.00522ad0
push str.png_do_quantize_returned_rowbytes0
push dword [esp + 0x70]
call fcn.00522ad0
push str.png_do_rgb_to_gray_found_nongray_pixel
push ebx
call fcn.00522ad0
nop word cs:[eax + eax]
nop dword [eax]
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ebp, dword [esp + 0x28]
mov ebx, dword [ecx]
mov al, byte [ecx + 8]
test al, al
mov dword [esp], ebx
je 0x52a320
test ebp, ebp
je 0x52a7c4
cmp al, 2
jne 0x52a7c4
mov al, byte [ecx + 9]
cmp al, 0x10
mov dword [esp + 4], ecx
je 0x52a405
cmp al, 8
jne 0x52a4cb
cmp dword [esp], 0
je 0x52a4cb
mov al, byte [ebp + 2]
mov cl, byte [ebp + 4]
mov ah, byte [ebp + 6]
mov esi, dword [esp + 4]
mov esi, dword [esi + 4]
mov edi, dword [esp]
jmp 0x52a30a
mov bl, 0xff
mov byte [edx + edi*4 - 1], bl
mov ch, byte [edx + esi - 1]
mov byte [edx + edi*4 - 2], ch
mov ch, byte [edx + esi - 2]
mov byte [edx + edi*4 - 3], ch
mov ch, byte [edx + esi - 3]
mov byte [edx + edi*4 - 4], ch
add esi, 0xfffffffd
add edi, 0xffffffff
je 0x52a4cb
cmp byte [edx + esi - 3], al
jne 0x52a2e0
cmp byte [edx + esi - 2], cl
jne 0x52a2e0
cmp byte [edx + esi - 1], ah
jne 0x52a2e0
xor ebx, ebx
jmp 0x52a2e2
test ebp, ebp
je 0x52a32e
movzx eax, word [ebp + 8]
mov dword [esp + 8], eax
jmp 0x52a336
mov dword [esp + 8], 0
mov al, byte [ecx + 9]
cmp al, 7
ja 0x52a69e
cmp al, 4
je 0x52a4e2
cmp al, 2
je 0x52a580
cmp al, 1
jne 0x52a691
mov eax, dword [esp + 8]
and eax, 1
mov esi, eax
shl esi, 8
sub esi, eax
mov dword [esp + 8], esi
test ebx, ebx
je 0x52a691
mov ebp, ebx
neg ebp
and ebp, 7
mov esi, ebx
add ebx, edx
lea eax, [esi - 1]
mov edi, eax
shr edi, 3
add edi, edx
test eax, eax
mov dword [esp + 4], ecx
je 0x52a670
mov ecx, esi
and ecx, 0xfffffffe
mov esi, edi
nop dword [eax + eax]
mov dword [esp + 0xc], edi
movzx eax, byte [edi]
bt eax, ebp
sbb eax, eax
mov byte [ebx - 1], al
xor eax, eax
cmp ebp, 7
lea edi, [ebp + 1]
sete al
mov ebp, 0
cmove edi, ebp
sub esi, eax
neg eax
mov ebp, dword [esp + 0xc]
movzx eax, byte [ebp + eax]
lea ebp, [ebx - 2]
mov dword [esp + 0xc], ebp
bt eax, edi
sbb eax, eax
mov byte [ebx - 2], al
lea ebp, [edi + 1]
xor eax, eax
cmp edi, 7
sete al
mov edi, 0
cmove ebp, edi
sub esi, eax
mov eax, dword [esp + 0xc]
mov ebx, eax
mov edi, esi
add ecx, 0xfffffffe
jne 0x52a3a0
jmp 0x52a674
test ebx, ebx
je 0x52a4cb
movzx eax, word [ebp + 2]
mov ecx, eax
shr ecx, 8
movzx edi, word [ebp + 4]
mov dword [esp + 8], edi
shr edi, 8
movzx esi, word [ebp + 6]
mov dword [esp + 0x10], esi
shr esi, 8
mov dword [esp + 0xc], esi
mov esi, dword [esp + 4]
mov esi, dword [esi + 4]
add esi, 0xffffffff
mov ebp, dword [esp]
nop dword [eax]
movzx ebx, byte [edx + esi - 5]
cmp cx, bx
jne 0x52a480
cmp byte [edx + esi - 4], al
jne 0x52a480
movzx ebx, byte [edx + esi - 3]
cmp di, bx
jne 0x52a480
mov ebx, dword [esp + 8]
cmp byte [edx + esi - 2], bl
jne 0x52a480
movzx ebx, byte [edx + esi - 1]
cmp word [esp + 0xc], bx
jne 0x52a480
mov ebx, dword [esp + 0x10]
cmp byte [edx + esi], bl
jne 0x52a480
xor ebx, ebx
jmp 0x52a482
mov bl, 0xff
mov byte [edx + ebp*8 - 1], bl
mov byte [edx + ebp*8 - 2], bl
movzx ebx, byte [edx + esi]
mov byte [edx + ebp*8 - 3], bl
movzx ebx, byte [edx + esi - 1]
mov byte [edx + ebp*8 - 4], bl
movzx ebx, byte [edx + esi - 2]
mov byte [edx + ebp*8 - 5], bl
movzx ebx, byte [edx + esi - 3]
mov byte [edx + ebp*8 - 6], bl
movzx ebx, byte [edx + esi - 4]
mov byte [edx + ebp*8 - 7], bl
movzx ebx, byte [edx + esi - 5]
mov byte [edx + ebp*8 - 8], bl
add esi, 0xfffffffa
add ebp, 0xffffffff
jne 0x52a440
mov ecx, dword [esp + 4]
mov byte [ecx + 8], 6
mov byte [ecx + 0xa], 4
mov dl, byte [ecx + 9]
shl dl, 2
jmp 0x52a79f
mov eax, dword [esp + 8]
and eax, 0xf
mov esi, eax
shl esi, 4
or esi, eax
mov dword [esp + 8], esi
test ebx, ebx
je 0x52a691
mov dword [esp + 4], ecx
lea ecx, [ebx*4]
and ecx, 4
lea ebp, [edx + ebx]
lea eax, [ebx - 1]
mov edi, eax
shr edi, 1
add edi, edx
test eax, eax
je 0x52a629
mov esi, ebx
and esi, 0xfffffffe
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edi]
shr eax, cl
and al, 0xf
movzx eax, al
mov ebx, eax
shl ebx, 4
add ebx, eax
mov byte [ebp - 1], bl
xor ebx, ebx
xor eax, eax
cmp ecx, 4
sete bl
setne al
sub edi, ebx
mov ch, byte [edi]
sub edi, eax
mov cl, al
shl cl, 2
shr ch, cl
and ch, 0xf
movzx eax, ch
mov ecx, eax
shl ecx, 4
add ecx, eax
mov byte [ebp - 2], cl
add ebp, 0xfffffffe
shl ebx, 2
mov ecx, ebx
add esi, 0xfffffffe
jne 0x52a530
jmp 0x52a62b
mov eax, dword [esp + 8]
and eax, 3
imul eax, eax, 0x55
mov dword [esp + 8], eax
test ebx, ebx
je 0x52a691
mov dword [esp + 4], ecx
lea ecx, [ebx + ebx]
add ecx, 6
not ecx
and ecx, 6
lea esi, [edx + ebx]
lea eax, [ebx - 1]
mov ebp, eax
shr ebp, 2
add ebp, edx
test eax, eax
je 0x52a650
and ebx, 0xfffffffe
mov edi, ebp
nop
mov dword [esp + 0xc], ebx
movzx eax, byte [ebp]
shr eax, cl
and al, 3
movzx eax, al
imul eax, eax, 0x55
mov byte [esi - 1], al
xor eax, eax
cmp ecx, 6
lea ebx, [ecx + 2]
mov ecx, 0
cmove ebx, ecx
sete al
sub edi, eax
neg eax
movzx eax, byte [ebp + eax]
lea ebp, [esi - 2]
mov ecx, ebx
shr eax, cl
and al, 3
movzx eax, al
imul eax, eax, 0x55
mov byte [esi - 2], al
lea ecx, [ebx + 2]
xor eax, eax
cmp ebx, 6
sete al
mov esi, 0
cmove ecx, esi
sub edi, eax
mov eax, ebp
mov ebx, dword [esp + 0xc]
mov esi, ebp
mov ebp, edi
add ebx, 0xfffffffe
jne 0x52a5c0
jmp 0x52a654
mov ebx, ecx
test byte [esp], 1
je 0x52a647
movzx eax, byte [edi]
mov ecx, ebx
shr eax, cl
and al, 0xf
movzx eax, al
mov ecx, eax
shl ecx, 4
add ecx, eax
mov byte [ebp - 1], cl
mov ecx, dword [esp + 4]
mov ebx, dword [esp]
jmp 0x52a68d
mov eax, esi
mov edi, ebp
mov ebx, dword [esp]
test bl, 1
je 0x52a689
mov esi, eax
movzx eax, byte [edi]
shr eax, cl
and al, 3
movzx eax, al
imul eax, eax, 0x55
mov byte [esi - 1], al
jmp 0x52a689
mov eax, ebx
mov esi, edi
mov ebx, dword [esp]
test bl, 1
je 0x52a689
mov ecx, eax
movzx eax, byte [esi]
bt eax, ebp
sbb eax, eax
mov byte [ecx - 1], al
mov ecx, dword [esp + 4]
mov ebp, dword [esp + 0x28]
mov byte [ecx + 9], 8
mov byte [ecx + 0xb], 8
mov dword [ecx + 4], ebx
mov al, 8
test ebp, ebp
je 0x52a7c4
cmp al, 0x10
mov dword [esp + 4], ecx
je 0x52a6d6
cmp al, 8
jne 0x52a78e
cmp dword [esp], 0
je 0x52a78e
mov ebp, dword [esp]
lea eax, [edx + ebp*2]
add edx, ebp
cmp ebp, 1
jne 0x52a730
mov esi, edx
mov edi, eax
jmp 0x52a773
test ebx, ebx
je 0x52a78e
mov eax, dword [esp + 4]
mov esi, dword [eax + 4]
mov eax, dword [esp]
neg eax
lea edi, [edx + esi*2]
add edi, 0xffffffff
add edx, esi
add edx, 0xffffffff
xor esi, esi
mov ecx, dword [esp + 8]
jmp 0x52a721
mov bl, 0xff
mov byte [edi + esi*4], bl
mov byte [edi + esi*4 - 1], bl
movzx ebx, byte [edx + esi*2]
mov byte [edi + esi*4 - 2], bl
movzx ebx, byte [edx + esi*2 - 1]
mov byte [edi + esi*4 - 3], bl
add esi, 0xffffffff
cmp eax, esi
je 0x52a78e
cmp byte [edx + esi*2 - 1], ch
jne 0x52a700
cmp byte [edx + esi*2], cl
jne 0x52a700
xor ebx, ebx
jmp 0x52a702
and ebp, 0xfffffffe
mov ecx, dword [esp + 8]
nop word [eax + eax]
cmp byte [edx - 1], cl
setne bl
neg bl
mov byte [eax - 1], bl
movzx ebx, byte [edx - 1]
mov byte [eax - 2], bl
cmp byte [edx - 2], cl
lea esi, [edx - 2]
setne bl
neg bl
lea edi, [eax - 4]
mov byte [eax - 3], bl
movzx edx, byte [edx - 2]
mov byte [eax - 4], dl
mov edx, esi
mov eax, edi
add ebp, 0xfffffffe
jne 0x52a740
test byte [esp], 1
je 0x52a78e
mov eax, dword [esp + 8]
cmp byte [esi - 1], al
setne al
neg al
mov byte [edi - 1], al
mov al, byte [esi - 1]
mov byte [edi - 2], al
mov ecx, dword [esp + 4]
mov byte [ecx + 8], 4
mov byte [ecx + 0xa], 2
mov dl, byte [ecx + 9]
add dl, dl
mov byte [ecx + 0xb], dl
movzx eax, dl
cmp dl, 8
jb 0x52a7b3
shr eax, 3
imul eax, dword [esp]
jmp 0x52a7c1
mov edx, dword [esp]
imul edx, eax
add edx, 7
shr edx, 3
mov eax, edx
mov dword [ecx + 4], eax
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret