Function at 0x52a6f0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x120
mov esi, dword [ebp + 0xc]
call 0x52a707
pop eax
mov dword [esp + 0xac], ecx
mov dword [esp + 0x9c], 0
mov dword [esp + 0x100], eax
cmp byte [esi + 0x6c3], 0
lea eax, [esi + 0x3c]
mov dword [esp + 0x20], eax
je 0x52a84e
mov cl, byte [esi + 0x4c]
test cl, cl
je 0x52a79b
mov al, 0x10
sub al, cl
je 0x52a79b
and al, 7
add al, cl
cmp al, 8
mov byte [esi + 0x4c], al
jb 0x52a79b
mov edx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x52a792
mov ecx, dword [esp + 0x20]
call fcn.005bab80
mov edx, dword [esi + 0x44]
mov ecx, dword [esi + 0x48]
movzx eax, byte [esi + 0x4c]
mov edi, esi
mov esi, dword [esi + 0x3c]
shr ecx, 8
add al, 0xf8
mov byte [esi + edx], bl
inc edx
mov esi, edi
cmp al, 7
mov ebx, ecx
mov dword [edi + 0x44], edx
mov dword [edi + 0x48], ecx
mov byte [edi + 0x4c], al
jbe 0x52a79b
cmp edx, dword [esi + 0x40]
je 0x52a760
mov ecx, ebx
jmp 0x52a773
mov eax, dword [esi + 0x6ac]
test eax, eax
je 0x52e394
mov edi, dword [esi + 0x44]
mov ecx, dword [esi + 0x6b8]
mov edx, esi
mov esi, edi
sub esi, ecx
jb 0x52e3ad
mov ebx, dword [edx + 0x3c]
mov dword [esp + 8], ecx
add ecx, ebx
add edi, ebx
mov ebx, dword [edx + 0x6b4]
mov edx, dword [edx + 0x6b0]
sub edi, ecx
mov dword [esp + 0x3c], ecx
sub edx, ebx
cmp edx, edi
jb 0x52e165
add eax, ebx
push edi
push dword [esp + 0x40]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp + 0xc]
add ebx, edi
mov dword [ecx + 0x6b4], ebx
mov eax, dword [ecx + 0x44]
sub eax, dword [esp + 8]
jb 0x52e3be
cmp esi, eax
mov eax, dword [esp + 0x9c]
jae 0x52a820
add dword [ecx + 0x6b8], esi
jmp 0x52a838
mov dword [ecx + 0x6b8], 0
mov dword [ecx + 0x44], 0
mov byte [ecx + 0x6c3], 0
mov esi, dword [esp + 0xac]
mov dword [esi + 4], eax
xor eax, eax
mov dword [esi], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebp + 8]
mov al, byte [ebp + 0x10]
lea edi, [esi + 0x2d0]
lea ebx, [esi + 0x658]
mov dword [esp + 0x9c], 0
mov dword [esp + 0xb0], edi
lea edi, [esi + 0x6a0]
mov dword [esp + 0x104], ebx
lea ebx, [esi + 0x48]
mov dword [esp + 0xbc], edi
lea edi, [esi + 0x44]
mov dword [esp + 8], ebx
lea ebx, [esi + 0x2d0]
mov dword [esp + 0x1c], edi
lea edi, [esi + 0x418]
mov dword [esp + 0xf0], ebx
mov dword [esp + 0x58], ecx
lea ecx, [esi + 0x30]
and al, 0xfb
mov dword [esp + 0x48], edi
lea edi, [esi + 0x4c]
mov dword [esp + 0x94], ecx
lea ecx, [esi + 0x410]
cmp al, 1
mov byte [esp + 0x63], al
mov dword [esp + 0x30], edi
mov dword [esp + 0x54], ecx
lea ecx, [esi + 0x3f0]
setne byte [esp + 0x87]
mov dword [esp + 0xa0], ecx
lea ecx, [esi + 0x50]
mov dword [esp + 0xf4], ecx
lea ecx, [esi + 8]
mov dword [esp + 0xa8], ecx
lea ecx, [esi + 0x41c]
mov dword [esp + 0xfc], ecx
lea ecx, [esi + 0x694]
mov dword [esp + 0xf8], ecx
lea ecx, [esi + 0x40]
mov dword [esp + 0x3c], ecx
lea ecx, [esi + 0x290]
mov dword [esp + 0xec], ecx
nop dword [eax]
mov ebx, esi
mov esi, dword [esi + 0x44]
cmp esi, 0x8000
ja 0x52e06f
cmp byte [ebx + 0x25], 0
mov esi, ebx
jne 0x52a735
cmp byte [esi + 0x27], 0
mov dword [esp + 0xa4], edx
je 0x52a9e0
mov eax, dword [esi + 0x38]
mov cl, 1
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x58]
cmp eax, 2
jbe 0x52aa50
test ecx, ecx
je 0x52a9ec
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xa8]
lea esi, [eax - 2]
mov dword [esp], esi
movzx esi, byte [edx]
mov ebx, dword [ebx + 0xc]
mov ecx, dword [ecx]
shl ebx, 5
and ebx, 0x7fe0
xor ebx, esi
mov esi, dword [esp]
movzx edx, word [ecx + ebx*2]
and esi, 0x7fff
cmp dword [esp + 0x58], 1
mov word [ecx + esi*2 + 0x10000], dx
mov edx, dword [esp]
mov esi, dword [ebp + 0xc]
mov word [ecx + ebx*2], dx
mov word [esi + 0xc], bx
jne 0x52a9f6
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x68], 0
jmp 0x52aa50
mov ecx, dword [esp + 0x58]
mov al, 1
mov dword [esp + 0x68], eax
jmp 0x52aa54
mov dword [esp + 0x68], 0
jmp 0x52aa50
mov ebx, dword [esp + 0xa4]
mov esi, dword [esi + 0xc]
dec eax
mov dword [esp + 0x68], 0
movzx edx, byte [ebx + 1]
shl esi, 5
and esi, 0x7fe0
xor esi, edx
mov edx, eax
movzx edi, word [ecx + esi*2]
and edx, 0x7fff
mov word [ecx + edx*2 + 0x10000], di
mov edx, dword [ebp + 0xc]
mov word [ecx + esi*2], ax
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
mov word [edx + 0xc], si
mov esi, edx
mov edx, ebx
nop word cs:[eax + eax]
nop dword [eax]
mov byte [esi + 0x27], 0
mov eax, esi
mov esi, dword [esi + 0x38]
lea ebx, [esi + ecx]
cmp ebx, 0x10102
jbe 0x52aac0
mov edi, 0x10102
mov ebx, eax
mov eax, ecx
sub edi, esi
sub eax, edi
jb 0x52e350
mov ecx, dword [ebx + 0x34]
mov dword [esp + 0x80], eax
sub ecx, esi
cmp ecx, edi
jb 0x52cd50
mov eax, dword [ebx + 0x30]
add eax, esi
push edi
push edx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add esi, edi
add edi, dword [esp + 0xa4]
mov dword [ebx + 0x38], esi
mov bl, byte [ebx + 0x22]
mov dword [esp + 0x7c], edi
mov edi, dword [esp + 0x30]
jmp 0x52aafb
mov eax, dword [eax + 0x34]
sub eax, esi
cmp eax, ecx
jb 0x52cd21
mov eax, dword [ebp + 0xc]
add esi, dword [eax + 0x30]
push ecx
push edx
push esi
mov esi, eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [esi + 0x38], ebx
mov dword [esp + 0x7c], 0
mov bl, byte [esi + 0x22]
jmp 0x52aafb
mov eax, dword [ebp + 0xc]
mov ebx, dword [esp + 4]
mov byte [eax + 0x24], 0
mov eax, dword [esp + 0x48]
test bl, bl
setne ch
cmp dword [eax], 0x10000
ja 0x52e2d5
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x38]
cmp eax, 0x10102
setb cl
test byte [esp + 0x87], cl
jne 0x52cccc
mov edx, dword [ebp + 0xc]
mov dword [esp + 4], ebx
cmp byte [edx + 0x24], 0
je 0x52abc0
xor edx, edx
cmp eax, 2
jb 0x52ac70
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x68]
mov cl, al
and cl, 1
je 0x52abb2
mov eax, dword [ebp + 0xc]
mov byte [esp + 0x14], ch
mov ecx, dword [eax + 4]
or ecx, dword [eax]
mov eax, dword [esp + 0x18]
jne 0x52ac6c
test eax, eax
je 0x52e268
cmp eax, 1
je 0x52e27b
mov eax, dword [esp + 0x94]
mov dword [esp + 0x68], 0
mov ecx, dword [eax]
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 0xc]
movzx edx, byte [ecx]
movzx ecx, byte [ecx + 1]
and esi, 0x1f
shl edx, 5
shl esi, 0xa
xor esi, ecx
mov ch, byte [esp + 0x14]
xor esi, edx
xor edx, edx
mov word [eax + 0xc], si
mov eax, dword [esp + 0x18]
jmp 0x52ac70
mov edx, 0x8000
cmp eax, 0x8001
jbe 0x52ac70
mov esi, dword [ebp + 0xc]
mov esi, dword [esi + 0x14]
test esi, esi
mov dword [esp], esi
je 0x52ba02
mov esi, dword [ebp + 0xc]
mov byte [esp + 0x14], ch
add eax, 0xffff7ffe
xor ebx, ebx
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 0x30]
mov edi, esi
mov esi, dword [esi + 8]
mov dword [esp + 0xc], ecx
nop
cmp eax, ebx
je 0x52ac55
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
movzx edi, byte [ecx + ebx + 0x8002]
mov ecx, dword [ebp + 0xc]
shl eax, 5
and eax, 0x7fe0
xor eax, edi
mov edi, ebx
movzx edx, word [esi + eax*2]
and edi, 0x7fff
mov word [esi + edi*2 + 0x10000], dx
lea edx, [ebx + 1]
add ebx, 0xffff8000
mov edi, ecx
mov word [esi + eax*2], bx
mov word [ecx + 0xc], ax
mov eax, dword [esp + 0x18]
cmp dword [esp], edx
mov ebx, edx
jne 0x52ac00
mov eax, dword [edi + 0x38]
mov edi, dword [esp + 0x30]
mov ch, byte [esp + 0x14]
xor ebx, ebx
mov edx, 0x8000
jmp 0x52ba04
mov ch, byte [esp + 0x14]
xor ebx, ebx
mov esi, dword [ebp + 0xc]
mov bl, ch
lea ecx, [edx + 0x8000]
mov dword [esp + 0x118], edx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x8c], ecx
mov ebx, dword [esi + 0x10]
add ebx, edx
mov edx, eax
cmp ecx, eax
mov eax, ecx
cmova eax, edx
mov ecx, edx
mov dword [esp + 0x18], edx
mov ecx, dword [esi + 0x30]
movzx edx, word [esi + 0x18]
cmp byte [esi + 0x26], 0
mov dword [esp + 0x50], ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], ecx
mov ecx, eax
je 0x52b310
test dx, dx
je 0x52b720
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x38], edx
cmp eax, ecx
jb 0x52e325
mov edx, dword [esp + 0x18]
mov eax, edx
sub eax, ecx
add ecx, 2
cmp eax, 3
cmovb ecx, edx
cmp ecx, edx
ja 0x52e2ee
mov ebx, dword [esp + 0x28]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x40], 0
add ecx, ebx
movzx eax, word [esi + 0x1a]
add edx, ebx
mov dword [esp], ecx
movzx ecx, word [esi + 0x1c]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x110], eax
mov dword [esp + 0xc], ecx
movzx ecx, word [esi + 0x1e]
mov dword [esi + 0x1c], 0
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0xc]
cmp cx, ax
setae al
mov dword [esp + 0x64], eax
mov al, byte [esi + 0x21]
mov byte [esp + 0x70], al
mov byte [esi + 0x20], al
movzx eax, word [esp + 0x38]
shr eax, 2
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x34]
mov esi, eax
add eax, ebx
not esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x108], esi
mov esi, dword [esp + 0x50]
lea eax, [ebx + esi]
mov ebx, dword [esp + 4]
mov dword [esp + 0x24], eax
mov eax, ebx
mov dword [esp + 0x10], eax
mov al, byte [esp + 0x70]
mov dword [esp + 0x44], esi
mov dword [esp + 0xc], ecx
mov byte [esp + 0x4c], al
movzx eax, cx
add esi, eax
mov dword [esp + 0x6c], eax
xor eax, eax
mov dword [esp + 0x114], esi
jmp 0x52ae00
mov ecx, ebx
mov ebx, dword [ebp + 0xc]
inc esi
mov dword [esp + 0x10], 0
mov eax, dword [ebx + 0x410]
mov word [eax + edx*4], 0
mov byte [eax + edx*4 + 2], cl
movzx eax, cl
mov edx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x418]
mov dword [esp], edx
inc ecx
mov dword [ebx + 0x418], ecx
inc word [ebx + eax*2 + 0x41c]
mov eax, dword [esp + 4]
xor ebx, ebx
inc eax
cmp ecx, 0x7bff
ja 0x52bcc0
mov ecx, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 4], eax
add eax, ecx
cmp eax, dword [esp + 0x14]
je 0x52bb16
movzx ecx, byte [eax]
mov eax, dword [ebp + 0xc]
mov byte [eax + 0x21], cl
mov eax, dword [esp]
cmp eax, edx
jne 0x52aee0
mov eax, dword [esp + 0xc]
cmp ax, 2
ja 0x52b9d9
test bl, bl
je 0x52ae70
mov eax, dword [ebp + 0xc]
mov byte [eax + 0x22], 0
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52ae80
mov ebx, ecx
mov ecx, dword [esp + 0x54]
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
jmp 0x52ae82
mov eax, dword [esp + 0x48]
mov ebx, ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [eax]
jmp 0x52aebd
mov ebx, ecx
mov ecx, dword [ebp + 0xc]
mov bh, byte [esp + 0x4c]
mov eax, dword [ecx + 0x410]
mov word [eax + edx*4], 0
mov byte [eax + edx*4 + 2], bh
movzx eax, bh
mov edx, dword [ecx + 0x418]
inc edx
mov dword [ecx + 0x418], edx
inc word [ecx + eax*2 + 0x41c]
cmp edx, 0x7bff
ja 0x52ccbd
cmp edx, dword [ecx + 0x414]
jne 0x52adb0
mov ecx, dword [esp + 0x54]
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
jmp 0x52adb0
mov edx, dword [ebp + 0xc]
mov byte [esp + 0x70], cl
movzx eax, byte [eax]
mov esi, dword [esp + 4]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 0xc]
shl edx, 5
and edx, 0x7fe0
xor edx, eax
mov eax, dword [esp + 0x44]
movzx edi, word [ecx + edx*2]
add eax, esi
mov esi, eax
and esi, 0x7fff
mov word [ecx + esi*2 + 0x10000], di
mov word [ecx + edx*2], ax
mov ecx, dword [esp + 0x64]
mov esi, dword [ebp + 0xc]
test cl, 1
mov word [esi + 0xc], dx
jne 0x52af9f
mov edi, dword [esp + 0x6c]
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x28]
cmp di, 0x20
cmovae esi, dword [esp + 0x10c]
push esi
mov esi, dword [ebp + 0xc]
push edi
push eax
push dword [esp + 0xb4]
call fcn.00466880
add esp, 0x10
cmp edx, 0x2001
mov edi, eax
mov ecx, 0
cmovae edi, ecx
cmp eax, 3
mov ecx, dword [esp + 0x64]
cmovne edi, eax
mov eax, 1
cmp edi, dword [esp + 0x110]
mov dword [esp + 0x88], edi
mov word [esi + 0x1c], di
movzx ecx, cl
cmovae ecx, eax
mov dword [esp + 0x64], ecx
jmp 0x52afbd
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x88], 0
xor edx, edx
mov dword [esp + 0x64], 0
mov word [eax + 0x1c], 0
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x40]
mov dword [esp + 0xe8], edx
inc dword [esp]
lea ecx, [ecx + edi + 1]
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + edi + 1]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebp + 0xc]
mov word [ecx + 0x1e], dx
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x88]
cmp cx, 3
jb 0x52b03d
cmp cx, dx
jb 0x52b03d
mov eax, dword [ebp + 0xc]
add cl, 0xfd
mov byte [esp + 0x10], cl
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52b0c1
mov ebx, dword [esp + 0x54]
mov ecx, ebx
call fcn.004664d0
mov esi, dword [esp + 0x48]
mov edx, dword [esi]
jmp 0x52b0c9
cmp byte [esp + 0x10], 0
mov cl, byte [esp + 0x70]
je 0x52b2b7
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52b06c
mov ecx, dword [esp + 0x54]
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
mov esi, dword [ebp + 0xc]
mov cl, byte [esp + 0x4c]
mov eax, dword [esi + 0x410]
mov word [eax + edx*4], 0
mov byte [eax + edx*4 + 2], cl
movzx ecx, cl
mov edx, dword [esp + 0xb8]
mov eax, dword [esi + 0x418]
inc eax
mov dword [esi + 0x418], eax
inc word [esi + ecx*2 + 0x41c]
cmp eax, 0x7bff
mov eax, dword [esp + 0x40]
mov cl, byte [esp + 0x70]
mov esi, dword [esp + 0x88]
jbe 0x52b2e0
jmp 0x52cdf3
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x54]
mov eax, dword [ebx]
mov ebx, dword [esp + 0x98]
mov cl, byte [esp + 0x10]
mov word [eax + edx*4], bx
mov byte [eax + edx*4 + 2], cl
mov edx, dword [esp + 0xc]
mov eax, dword [esi]
inc eax
mov dword [esp + 0x88], eax
mov dword [esi], eax
lea eax, [edx + 0xfd]
movzx eax, al
movzx ecx, byte [eax + 0x61bf94]
cmp ecx, 0x1c
ja 0x52e294
mov eax, dword [ebp + 0xc]
inc word [eax + ecx*2 + 0x61e]
lea ecx, [ebx - 1]
movzx eax, bx
movzx ecx, cx
cmp ecx, 0x100
jae 0x52b139
mov ebx, dword [esp + 0x24]
dec eax
movzx ecx, byte [eax + 0x61c0c4]
cmp ecx, 0x1e
jb 0x52b16d
jmp 0x52e2ae
add ebx, 0xfffffeff
xor ecx, ecx
movzx edx, bx
mov ebx, dword [esp + 0x24]
cmp edx, 0x7f00
mov edx, dword [esp + 0xc]
jae 0x52b16d
dec eax
shr eax, 7
add eax, 0x100
movzx ecx, byte [eax + 0x61c0c4]
cmp ecx, 0x1e
jae 0x52e2ae
mov eax, dword [ebp + 0xc]
add edx, 0xfffffffe
movzx edx, dx
mov esi, edx
inc word [eax + ecx*2 + 0x658]
movzx ecx, word [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x64], eax
mov eax, edx
jmp 0x52b1ae
xor esi, esi
inc ebx
lea ecx, [edx + 1]
test eax, eax
je 0x52b239
cmp ebx, dword [esp + 0x14]
mov edx, ecx
je 0x52b235
dec eax
test esi, esi
je 0x52b1a0
dec esi
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0xc], esi
mov esi, dword [esp]
cmp esi, ecx
je 0x52b220
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
movzx edi, byte [esi]
mov dword [esp + 0x24], edx
inc esi
mov dword [esp], esi
shl eax, 5
and eax, 0x7fe0
xor eax, edi
mov edi, edx
mov edx, dword [esp + 0x64]
and edi, 0x7fff
mov dword [esp + 0x10], eax
movzx ecx, word [edx + eax*2]
mov word [edx + edi*2 + 0x10000], cx
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
mov word [edx + eax*2], cx
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x4c]
jmp 0x52b223
mov dword [esp], ecx
mov esi, dword [esp + 0xc]
inc ebx
lea ecx, [edx + 1]
test eax, eax
jne 0x52b1ae
jmp 0x52b239
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x108]
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x114]
add eax, ebx
add esi, ecx
mov ebx, dword [esp + 0x10]
add eax, dword [esp + 0x6c]
add eax, ecx
cmp esi, dword [esp + 0x34]
mov esi, dword [esp + 0x40]
cmova esi, eax
cmp dword [esp + 0x88], 0x7c00
mov eax, esi
mov esi, dword [ebp + 0xc]
mov word [esi + 0xc], bx
mov byte [esi + 0x22], 0
mov dword [esi + 0x1c], 0
jae 0x52cdd6
mov cl, byte [esp + 0x70]
inc edx
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x10], 0
mov dword [esp + 0xe8], 0
mov dword [esp + 0x64], 0
jmp 0x52b2e0
mov edx, dword [ebp + 0xc]
mov esi, dword [esp + 0x88]
mov bl, 1
mov byte [edx + 0x22], 1
mov dl, 1
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xb8]
nop word cs:[eax + eax]
nop
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
mov byte [eax + 0x20], cl
mov ecx, esi
mov esi, edx
mov edx, dword [esp + 0xe8]
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x2c]
jmp 0x52ad84
cmp eax, ebx
mov dword [esp + 0x38], edx
jb 0x52e323
mov edx, dword [esp + 0x18]
lea ecx, [ebx + 2]
mov eax, edx
sub eax, ebx
cmp eax, 3
cmovb ecx, edx
cmp ecx, edx
ja 0x52e2ee
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], 0
mov dword [esp + 0x4c], ebx
add ecx, esi
add eax, esi
add edx, esi
mov dword [esp], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
lea eax, [esi + ebx]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
neg ecx
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x2c]
xor ebx, ebx
jmp 0x52b3c9
mov esi, dword [ebp + 0xc]
movzx ecx, byte [esp + 0xc]
mov ebx, dword [esp + 0x14]
mov eax, dword [esi + 0x410]
mov word [eax + edx*4], 0
mov byte [eax + edx*4 + 2], cl
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov eax, dword [esi + 0x418]
inc eax
mov dword [esi + 0x418], eax
inc word [esi + ecx*2 + 0x41c]
mov ecx, dword [esp + 0x2c]
cmp eax, 0x7bff
ja 0x52bcb0
inc ebx
lea eax, [ecx + ebx]
cmp eax, dword [esp + 0x24]
je 0x52bb16
movzx eax, byte [eax]
mov byte [esp + 0xc], al
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [esp]
cmp eax, edx
je 0x52b4a0
mov edx, eax
mov eax, dword [esp + 0x4c]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x14], ebx
movzx ecx, byte [edx]
add eax, ebx
mov ebx, edx
mov edx, dword [esi + 8]
mov esi, dword [esi + 0xc]
inc ebx
mov dword [esp], ebx
shl esi, 5
and esi, 0x7fe0
xor esi, ecx
mov ecx, eax
movzx edi, word [edx + esi*2]
and ecx, 0x7fff
mov word [edx + ecx*2 + 0x10000], di
mov ecx, dword [ebp + 0xc]
mov word [edx + esi*2], ax
mov edx, dword [esp + 0x18]
mov word [ecx + 0xc], si
mov ecx, dword [esp + 0x28]
push dword [esp + 0x38]
push 0
push eax
push dword [esp + 0xb4]
call fcn.00466880
add esp, 0x10
cmp eax, 2
jbe 0x52b471
mov esi, edx
cmp eax, 3
jne 0x52b512
cmp esi, 0x2001
jb 0x52b512
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x30]
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52b380
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
jmp 0x52b380
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52b4c0
mov ecx, dword [esp + 0x54]
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x410]
mov dword [esp], eax
mov word [eax + edx*4], 0
movzx eax, byte [esp + 0xc]
mov esi, dword [esp]
mov byte [esi + edx*4 + 2], al
mov edx, dword [esp + 4]
mov eax, dword [ecx + 0x418]
inc eax
mov dword [ecx + 0x418], eax
inc word [ecx + edx*2 + 0x41c]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
cmp eax, 0x7bff
mov dword [esp], edx
jbe 0x52b3c8
jmp 0x52bcb0
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x6c], eax
add al, 0xfd
mov ebx, dword [esp + 0x54]
mov byte [esp + 4], al
mov edx, dword [ecx + 0x418]
cmp edx, dword [ecx + 0x414]
jne 0x52b540
mov ecx, ebx
call fcn.004664d0
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
jmp 0x52b544
mov ecx, dword [esp + 0x48]
mov eax, dword [ebx]
mov bl, byte [esp + 4]
mov edi, dword [esp + 0x30]
mov word [eax + edx*4], si
mov byte [eax + edx*4 + 2], bl
mov ebx, dword [esp + 0x6c]
mov eax, dword [ecx]
inc eax
mov dword [esp + 0x98], eax
mov dword [ecx], eax
lea eax, [ebx + 0xfd]
movzx eax, al
movzx ecx, byte [eax + 0x61bf94]
cmp ecx, 0x1c
ja 0x52e294
mov eax, dword [ebp + 0xc]
inc word [eax + ecx*2 + 0x61e]
lea ecx, [esi - 1]
movzx eax, si
movzx ecx, cx
cmp ecx, 0x100
jae 0x52b5ad
dec eax
movzx ecx, byte [eax + 0x61c0c4]
cmp ecx, 0x1e
jb 0x52b5d9
jmp 0x52e2ae
lea ecx, [esi - 0x101]
movzx edx, cx
xor ecx, ecx
cmp edx, 0x7f00
jae 0x52b5d9
dec eax
shr eax, 7
add eax, 0x100
movzx ecx, byte [eax + 0x61c0c4]
cmp ecx, 0x1e
jae 0x52e2ae
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x2c]
lea edx, [eax + ebx + 1]
mov eax, dword [ebp + 0xc]
lea esi, [esi + ebx + 1]
inc word [eax + ecx*2 + 0x658]
mov ecx, dword [esp + 0x6c]
movzx ebx, word [eax + 0xc]
mov eax, dword [eax + 8]
dec ecx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x64], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], ecx
jmp 0x52b639
mov dword [esp + 0xc], 0
mov esi, eax
lea edx, [ebx + 1]
inc esi
cmp dword [esp + 4], 0
je 0x52b6bc
cmp esi, dword [esp + 0x24]
mov ebx, edx
je 0x52b6b8
mov ecx, dword [esp + 0xc]
dec dword [esp + 4]
mov eax, esi
test ecx, ecx
je 0x52b620
dec ecx
mov edx, dword [esp]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x10]
cmp edx, ecx
je 0x52b6b0
mov esi, dword [esp + 0x44]
mov ecx, edx
movzx edx, byte [edx]
mov dword [esp + 0x2c], ebx
inc ecx
mov dword [esp], ecx
mov ecx, dword [esp + 0x2c]
shl esi, 5
and esi, 0x7fe0
xor esi, edx
mov edx, ebx
mov ebx, dword [esp + 0x64]
and edx, 0x7fff
mov dword [esp + 0x44], esi
movzx edi, word [ebx + esi*2]
mov word [ebx + edx*2 + 0x10000], di
mov word [ebx + esi*2], cx
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
jmp 0x52b628
mov dword [esp], ecx
jmp 0x52b628
mov esi, dword [esp + 0x24]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x40]
lea eax, [esi + ecx]
add esi, dword [esp + 0x70]
add esi, ecx
mov ecx, dword [esp + 0x14]
add eax, ecx
add esi, ecx
mov ecx, dword [esp + 0x44]
cmp eax, dword [esp + 0x34]
cmova edx, esi
inc ebx
cmp dword [esp + 0x98], 0x7bff
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x4c], ebx
mov word [edx + 0xc], cx
mov edx, dword [esp + 0x10]
jbe 0x52b36b
jmp 0x52cdcb
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x40], 0
test ebx, ebx
je 0x52bb16
mov esi, dword [esp + 0x50]
mov edx, 1
test esi, esi
cmovne edx, esi
lea ecx, [edx - 1]
cmp ecx, ebx
jae 0x52e2c2
mov ecx, dword [esp + 0x28]
cmp edx, eax
mov bh, byte [ecx + edx - 1]
mov ecx, edx
cmova ecx, eax
test esi, esi
jne 0x52b7cb
mov dword [esp + 0x4c], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x28]
mov edx, dword [ecx + 0x418]
mov bl, byte [eax]
cmp edx, dword [ecx + 0x414]
jne 0x52b78e
mov ecx, dword [esp + 0x54]
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
mov esi, dword [ebp + 0xc]
movzx eax, bl
mov ecx, dword [esi + 0x410]
mov word [ecx + edx*4], 0
mov byte [ecx + edx*4 + 2], bl
inc edx
mov ecx, dword [esp + 0x4c]
mov dword [esi + 0x418], edx
inc word [esi + eax*2 + 0x41c]
cmp edx, 0x7bff
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
ja 0x52cde7
cmp eax, edx
mov eax, dword [esp + 0x50]
jbe 0x52bb1a
mov esi, ecx
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], 0
mov dword [esp + 4], 0
mov dword [esp + 0x10], edx
add eax, ecx
add esi, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
add eax, ecx
add ecx, edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x70], ecx
jmp 0x52b830
mov esi, dword [esp + 0x4c]
add dword [esp + 4], edx
add esi, edx
mov edx, esi
cmp edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
mov bh, bl
je 0x52bb1a
lea eax, [esi + 1]
mov bl, byte [esi]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
cmp bh, bl
lea eax, [eax + edx]
mov dword [esp + 0x14], eax
jne 0x52b910
mov byte [esp], bh
mov byte [esp + 0x38], bl
mov ebx, dword [esp + 0x18]
mov edx, eax
mov dword [esp + 0x4c], esi
cmp eax, ebx
ja 0x52e2fd
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
sub ebx, edx
add eax, edx
xor edx, edx
sub ecx, eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 4]
lea esi, [eax + ecx]
mov ecx, dword [esp + 0x54]
nop dword [eax]
cmp ebx, edx
je 0x52b8b5
movzx eax, byte [esp]
cmp al, byte [esi + edx]
jne 0x52b8b9
inc edx
cmp edx, 0x102
jne 0x52b890
mov eax, dword [esp + 0x14]
mov bl, byte [esp + 0x38]
mov edx, 0x102
jmp 0x52b8c6
mov edx, dword [esp + 0x24]
mov bl, byte [esp + 0x38]
mov eax, dword [esp + 0x14]
cmp edx, 2
jbe 0x52b910
add eax, edx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x24], edx
mov bh, dl
mov dword [esp + 0x14], eax
sub eax, dword [esp + 0x34]
cmova ecx, eax
add bh, 0xfd
mov dword [esp + 0x40], ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0x418]
cmp edx, dword [ecx + 0x414]
jne 0x52b96c
mov esi, dword [esp + 0x54]
mov ecx, esi
call fcn.004664d0
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
jmp 0x52b974
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x418]
cmp edx, dword [eax + 0x414]
jne 0x52b92c
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
mov esi, dword [ebp + 0xc]
movzx eax, bl
mov ecx, dword [esi + 0x410]
mov word [ecx + edx*4], 0
mov byte [ecx + edx*4 + 2], bl
inc edx
mov dword [esi + 0x418], edx
inc word [esi + eax*2 + 0x41c]
cmp edx, 0x7bff
ja 0x52cce3
mov edx, dword [esp + 0xc]
inc dword [esp + 4]
mov esi, edx
jmp 0x52b81c
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x54]
mov eax, dword [esi]
mov word [eax + edx*4], 1
mov byte [eax + edx*4 + 2], bh
mov eax, dword [esp + 0x24]
inc edx
mov dword [ecx], edx
add eax, 0xfd
movzx eax, al
movzx ecx, byte [eax + 0x61bf94]
cmp ecx, 0x1d
jae 0x52e24e
mov eax, dword [ebp + 0xc]
inc word [eax + ecx*2 + 0x61e]
inc word [eax + 0x658]
cmp edx, 0x7bff
ja 0x52cd71
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
sub ecx, dword [esp + 0xc]
lea eax, [edx - 2]
cmp ecx, eax
ja 0x52b810
jmp 0x52bb16
mov ecx, dword [ebp + 0xc]
add al, 0xfd
mov byte [esp], al
mov edx, dword [ecx + 0x418]
cmp edx, dword [ecx + 0x414]
jne 0x52ba13
mov ebx, dword [esp + 0x54]
mov ecx, ebx
call fcn.004664d0
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
jmp 0x52ba17
xor ebx, ebx
mov esi, dword [ebp + 0xc]
mov dword [esi + 0x14], 0
jmp 0x52ac72
mov ebx, dword [esp + 0x54]
mov eax, dword [ebx]
mov ebx, dword [esp + 0x98]
mov cl, byte [esp]
mov word [eax + edx*4], bx
mov byte [eax + edx*4 + 2], cl
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx]
inc eax
mov dword [ecx], eax
mov ecx, dword [esp + 0xc]
add ecx, 0xfd
movzx ecx, cl
movzx ecx, byte [ecx + 0x61bf94]
cmp ecx, 0x1c
ja 0x52e294
mov edx, dword [ebp + 0xc]
inc word [edx + ecx*2 + 0x61e]
lea ecx, [ebx - 1]
movzx edx, bx
movzx ecx, cx
cmp ecx, 0x100
jae 0x52ba83
mov ebx, dword [esp + 0x6c]
dec edx
movzx ecx, byte [edx + 0x61c0c4]
cmp ecx, 0x1e
jb 0x52bab8
jmp 0x52e2ae
add ebx, 0xfffffeff
xor ecx, ecx
movzx edi, bx
mov ebx, dword [esp + 0x6c]
cmp edi, 0x7f00
mov edi, dword [esp + 0x30]
jae 0x52bab8
dec edx
shr edx, 7
add edx, 0x100
movzx ecx, byte [edx + 0x61c0c4]
cmp ecx, 0x1e
jae 0x52e2ae
mov edx, dword [ebp + 0xc]
add dword [esp + 0x44], ebx
mov ebx, 1
inc word [edx + ecx*2 + 0x658]
mov edx, dword [esp + 0x18]
mov ecx, esi
cmp edx, esi
cmovb ecx, edx
mov edx, dword [esp + 0x8c]
cmp ecx, edx
cmovae ecx, edx
mov edx, esi
sub edx, ecx
cmp edx, 1
cmovae edx, ebx
mov ebx, dword [ebp + 0xc]
cmp eax, 0x7c00
mov dword [ebx + 0x1c], 0
mov byte [ebx + 0x22], 0
jae 0x52cd92
mov eax, dword [esp + 0x44]
sub eax, ecx
sub eax, edx
add eax, dword [esp + 4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x40]
mov esi, dword [ebp + 0xc]
xor ecx, ecx
mov dword [esi + 0x14], ebx
mov dl, byte [esi + 0x22]
test dl, dl
mov dword [esp + 4], edx
mov edx, dword [esp + 0x74]
setne cl
sub edx, eax
mov al, byte [esi + 0x24]
add edx, dword [esp + 0x34]
add edx, ebx
sub edx, ecx
add dword [esi], edx
adc dword [esi + 4], 0
test al, al
mov dword [esi + 0x10], ebx
je 0x52bb71
cmp byte [esp + 0x63], 1
jne 0x52aaf0
mov edx, dword [esp + 0x8c]
cmp dword [esp + 0x18], edx
ja 0x52aaf0
jmp 0x52ccef
cmp dword [esp + 0x7c], 0
jne 0x52bb95
cmp byte [esp + 0x63], 1
mov ebx, dword [esp + 4]
jne 0x52bb99
mov edx, dword [esp + 0x8c]
cmp dword [esp + 0x18], edx
ja 0x52bb99
jmp 0x52ccef
mov ebx, dword [esp + 4]
mov eax, dword [ebp + 0xc]
movdqa xmm5, xmmword [0x607160]
movdqa xmm6, xmmword [str._b_b_b_b_b_b_b_b]
pcmpeqd xmm4, xmm4
cmp word [eax + 0x18], 0
je 0x52bc67
mov eax, dword [esp + 0xa8]
movdqa xmm0, xmmword [0x607150]
mov ecx, 0xffff0000
mov eax, dword [eax]
nop word cs:[eax + eax]
nop dword [eax + eax]
movdqu xmm1, xmmword [eax + ecx + 0x10000]
movdqa xmm3, xmm0
paddw xmm0, xmm6
movdqa xmm2, xmm1
pxor xmm1, xmm5
pcmpgtw xmm2, xmm4
pand xmm3, xmm2
pandn xmm2, xmm1
por xmm2, xmm3
movdqu xmmword [eax + ecx + 0x10000], xmm2
add ecx, 0x10
jne 0x52bbe0
movdqa xmm0, xmmword [0x607150]
mov ecx, 0xffff8000
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [eax + ecx*2 + 0x20000]
movdqa xmm3, xmm0
paddw xmm0, xmm6
movdqa xmm2, xmm1
pxor xmm1, xmm5
pcmpgtw xmm2, xmm4
pand xmm3, xmm2
pandn xmm2, xmm1
por xmm2, xmm3
movdqu xmmword [eax + ecx*2 + 0x20000], xmm2
add ecx, 8
jne 0x52bc30
mov ecx, dword [esp + 0x7c]
mov eax, str._cargo_registry_src_github.com_1ecc6299db9ec823_utfx_0.1.0_src_ucstr.rs
test ecx, ecx
mov edx, ecx
cmove edx, eax
mov eax, dword [esp + 0x80]
cmove eax, ecx
mov ecx, dword [esp + 0x94]
push eax
call fcn.00466e10
add esp, 4
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
jmp 0x52aafb
mov eax, dword [esp + 0x4c]
lea edx, [eax + ebx + 1]
jmp 0x52bcc6
mov edx, dword [esp + 0x44]
add edx, eax
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x40], eax
xor ebx, ebx
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x74]
cmp byte [ecx + 0x22], 0
setne bl
sub eax, dword [esp + 0x50]
add eax, edx
sub eax, ebx
neg ebx
add dword [ecx], eax
mov eax, dword [esp + 0x40]
adc dword [ecx + 4], 0
test eax, eax
je 0x52bd20
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x34], edx
cmp byte [ecx + 0x24], 0
je 0x52bd2e
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x34]
mov byte [ecx + 0x24], 0
jmp 0x52be34
mov eax, edx
sub eax, dword [esp + 0x118]
jmp 0x52be34
mov eax, dword [ebp + 0xc]
movdqa xmm5, xmmword [0x607160]
movdqa xmm6, xmmword [str._b_b_b_b_b_b_b_b]
pcmpeqd xmm4, xmm4
cmp word [eax + 0x18], 0
je 0x52bdf7
mov eax, dword [esp + 0xa8]
movdqa xmm0, xmmword [0x607150]
mov ecx, 0xffff0000
mov eax, dword [eax]
nop word cs:[eax + eax]
movdqu xmm1, xmmword [eax + ecx + 0x10000]
movdqa xmm3, xmm0
paddw xmm0, xmm6
movdqa xmm2, xmm1
pxor xmm1, xmm5
pcmpgtw xmm2, xmm4
pand xmm3, xmm2
pandn xmm2, xmm1
por xmm2, xmm3
movdqu xmmword [eax + ecx + 0x10000], xmm2
add ecx, 0x10
jne 0x52bd70
movdqa xmm0, xmmword [0x607150]
mov ecx, 0xffff8000
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [eax + ecx*2 + 0x20000]
movdqa xmm3, xmm0
paddw xmm0, xmm6
movdqa xmm2, xmm1
pxor xmm1, xmm5
pcmpgtw xmm2, xmm4
pand xmm3, xmm2
pandn xmm2, xmm1
por xmm2, xmm3
movdqu xmmword [eax + ecx*2 + 0x20000], xmm2
add ecx, 8
jne 0x52bdc0
mov ecx, dword [esp + 0x7c]
mov eax, str._cargo_registry_src_github.com_1ecc6299db9ec823_utfx_0.1.0_src_ucstr.rs
test ecx, ecx
mov edx, ecx
cmove edx, eax
mov eax, dword [esp + 0x80]
cmove eax, ecx
mov ecx, dword [esp + 0x94]
push eax
call fcn.00466e10
add esp, 4
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x40]
mov ecx, dword [ebp + 0xc]
add edx, ebx
mov dword [esp + 0x50], 0
mov dword [esp + 0x68], edx
mov dword [ecx + 0x10], eax
xor eax, eax
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
mov esi, dword [ebp + 0xc]
test edx, edx
cmove ecx, edx
mov edx, dword [esp + 0x58]
mov ebx, edx
sub ebx, ecx
add dword [esp + 0x9c], ebx
add dword [esi + 0x28], ebx
mov dword [esp + 0x40], ebx
adc dword [esi + 0x2c], 0
test al, al
jne 0x52e12b
cmp edx, ecx
mov dword [esp + 0x80], ecx
jb 0x52e310
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
mov dl, byte [ecx + 0x25]
mov cl, byte [ecx + 0x4c]
cmp ebx, 5
mov dword [esp + 0x4c], eax
sbb eax, 0
jae 0x52c020
mov eax, dword [esp + 8]
movzx ebx, dl
mov esi, dword [esp + 0x20]
or ebx, 2
shl ebx, cl
add cl, 3
or ebx, dword [eax]
cmp cl, 0x10
mov dword [eax], ebx
mov byte [edi], cl
mov ecx, dword [esp + 0x1c]
jb 0x52bf70
mov edx, dword [ecx]
jmp 0x52bf07
mov edi, ecx
mov eax, dword [esi]
mov ecx, dword [esp]
shr ebx, 0x10
mov byte [eax + edx], ch
inc edx
mov eax, dword [esp + 8]
mov ecx, edi
mov dword [edi], edx
mov edi, dword [esp + 0x30]
mov dword [eax], ebx
movzx eax, byte [edi]
add al, 0xf0
cmp al, 0xf
mov byte [edi], al
jbe 0x52bf70
mov edi, dword [esp + 0x3c]
mov eax, dword [edi]
cmp edx, eax
jne 0x52bf40
mov edi, ecx
mov ecx, dword [esp + 0x20]
call fcn.005bab80
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x20]
mov edx, dword [edi]
mov eax, dword [eax]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
jmp 0x52bf45
mov dword [esp], ebx
mov edi, ecx
mov ecx, dword [esi]
mov byte [ecx + edx], bl
inc edx
mov ebx, dword [esp]
mov ecx, edi
mov dword [edi], edx
mov edi, dword [esp + 8]
cmp edx, eax
jne 0x52bee0
mov ecx, esi
mov edx, eax
call fcn.005bab80
mov ecx, dword [esp + 0x1c]
mov ebx, dword [edi]
mov edx, dword [ecx]
jmp 0x52bee0
push 0x120
push str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b
push dword [esp + 0xb8]
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ebx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xf4]
mov edx, 0x120
mov dword [ebx], 0x5050505
mov dword [ebx + 4], 0x5050505
mov dword [ebx + 8], 0x5050505
mov dword [ebx + 0xc], 0x5050505
mov dword [ebx + 0x10], 0x5050505
mov dword [ebx + 0x14], 0x5050505
mov dword [ebx + 0x18], 0x5050505
mov dword [ebx + 0x1c], 0x5050505
push 0x120
push dword [esp + 0xf4]
call fcn.004684d0
add esp, 8
mov ecx, dword [esp + 0xec]
mov edx, 0x20
push 0x20
push ebx
call fcn.004684d0
add esp, 8
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
mov edx, dword [edx]
push esi
call fcn.00466f10
add esp, 4
mov esi, dword [ebp + 0xc]
jmp 0x52e006
xor edi, edi
xor eax, eax
nop word cs:[eax + eax]
nop
mov esi, dword [ebp + 0xc]
cmp word [esi + edi + 0x656], 0
jne 0x52c04f
add edi, 0xfffffffe
inc eax
cmp edi, 0xfffffdc4
jne 0x52c030
mov eax, 0x11e
mov edi, 0x11e
sub edi, eax
mov eax, 0x101
cmp edi, 0x102
cmovb edi, eax
cmp edi, 0x11f
mov dword [esp + 0x34], edi
jae 0x52e363
mov eax, dword [ebp + 0xc]
mov edi, 0
mov byte [esp + 0x8c], cl
mov dword [esp + 0x58], ebx
mov byte [esp + 0x44], dl
mov dword [esp + 0x28], 0
cmp word [eax + 0x692], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffff
cmp word [eax + 0x690], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffffe
cmp word [eax + 0x68e], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffffd
cmp word [eax + 0x68c], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffffc
cmp word [eax + 0x68a], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffffb
cmp word [eax + 0x688], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffffa
cmp word [eax + 0x686], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff9
cmp word [eax + 0x684], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff8
cmp word [eax + 0x682], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff7
cmp word [eax + 0x680], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff6
cmp word [eax + 0x67e], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff5
cmp word [eax + 0x67c], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff4
cmp word [eax + 0x67a], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff3
cmp word [eax + 0x678], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff2
cmp word [eax + 0x676], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff1
cmp word [eax + 0x674], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xfffffff0
cmp word [eax + 0x672], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffef
cmp word [eax + 0x670], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffee
cmp word [eax + 0x66e], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffed
cmp word [eax + 0x66c], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffec
cmp word [eax + 0x66a], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffeb
cmp word [eax + 0x668], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffea
cmp word [eax + 0x666], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe9
cmp word [eax + 0x664], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe8
cmp word [eax + 0x662], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe7
cmp word [eax + 0x660], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe6
cmp word [eax + 0x65e], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe5
cmp word [eax + 0x65c], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe4
cmp word [eax + 0x65a], 0
jne 0x52c310
mov eax, dword [ebp + 0xc]
mov edi, 0xffffffe3
cmp word [eax + 0x658], 1
sbb edi, 0
nop word cs:[eax + eax]
nop
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0x34]
add edi, 0x1e
mov eax, 1
cmove edi, eax
push 0x120
mov esi, dword [ebp + 0xc]
push dword [esp + 0xb4]
mov ebx, dword [esp + 0x100]
push ebx
push 0xf
call fcn.00467640
add esp, 0x10
mov ecx, dword [esp + 0x104]
mov edx, edi
push 0x20
push dword [esp + 0xa4]
push ebx
push 0xf
call fcn.00467640
add esp, 0x10
mov eax, dword [esp + 0x34]
mov dword [esi + 0x6a8], 0
pxor xmm0, xmm0
mov dword [esp + 0x10], edi
mov dword [esp + 0xe2], 0
mov dword [esp], 0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
mov dword [esp + 0xde], 0
lea eax, [esi + eax + 0x2d0]
mov dword [esp + 0x2c], eax
lea eax, [esi + edi + 0x3f0]
mov edi, 1
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x78], eax
lea eax, [esi + 0x2d1]
mov dword [esp + 0x5c], eax
mov al, byte [esi + 0x2d0]
mov esi, 1
not al
mov byte [esp + 4], al
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
xor eax, eax
mov edx, dword [esp]
nop
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 4]
cmp esi, 1
jne 0x52c420
mov ecx, dword [esp + 0xc]
mov esi, edx
mov dword [esp], edi
test ecx, ecx
jne 0x52c463
jmp 0x52c9a0
mov ecx, dword [esp + 0x5c]
mov ebx, edi
test ecx, ecx
je 0x52c43c
cmp dword [esp + 0x2c], ecx
lea esi, [esp + 0x5c]
jne 0x52c456
mov dword [esp + 0x5c], 0
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x52c9a0
cmp dword [esp + 0x24], ecx
lea esi, [esp + 0x78]
je 0x52c9a0
lea edi, [ecx + 1]
mov dword [esi], edi
lea esi, [ebx + 1]
mov dword [esp], esi
mov esi, ebx
movzx ecx, byte [ecx]
mov ebx, eax
cmp cl, al
mov byte [esp + 4], cl
jne 0x52c550
mov eax, dword [esp + 0x18]
test bl, bl
sete cl
cmp al, 0x8a
setb dl
and dl, cl
cmp al, 6
setb bh
or bh, dl
mov edx, dword [esp + 0x5c]
add bh, al
test edx, edx
je 0x52c4a7
cmp dword [esp + 0x2c], edx
lea eax, [esp + 0x5c]
jne 0x52c4c1
mov dword [esp + 0x5c], 0
mov edx, dword [esp + 0x78]
test edx, edx
je 0x52c592
cmp dword [esp + 0x24], edx
lea eax, [esp + 0x78]
je 0x52c592
lea ecx, [edx + 1]
mov esi, dword [esp]
test bl, bl
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], edx
mov dword [eax], ecx
setne al
cmp bh, 0x8a
setae cl
or cl, al
mov al, bh
cmp cl, 1
mov ecx, esi
lea edi, [esi + 1]
mov esi, 1
mov edx, ecx
jne 0x52c400
mov eax, dword [esp + 0x14]
cmp bh, 5
mov edx, ecx
mov dword [esp + 0xc], eax
mov al, bh
jbe 0x52c400
mov edx, dword [esp + 0x14]
mov dword [esp + 0x74], 0
mov dword [esp + 0xc], edx
test bl, bl
mov dword [esp], ecx
mov dword [esp + 0x18], esi
je 0x52c576
mov ecx, dword [esp + 0x28]
cmp bl, 0x10
jae 0x52e349
mov eax, 0x10
mov byte [esp + 0x38], 1
jmp 0x52c630
mov eax, dword [esp + 0x18]
cmp al, 2
jbe 0x52c5c8
mov cl, 1
mov edi, dword [esp]
xor esi, esi
mov bh, al
mov dword [esp + 0x74], ecx
mov ecx, edx
mov edx, dword [esp + 0x14]
test bl, bl
mov dword [esp], ecx
mov dword [esp + 0x18], esi
jne 0x52c525
mov ecx, dword [esp + 0x28]
cmp bh, 0xb
jae 0x52c617
mov eax, 0x11
mov byte [esp + 0x38], 2
jmp 0x52c630
cmp bh, 2
jbe 0x52c748
mov ecx, dword [esp]
mov dword [esp + 0x74], 0
mov esi, 1
mov dword [esp + 0xc], 0
xor edx, edx
mov edi, ecx
test bl, bl
mov dword [esp], ecx
mov dword [esp + 0x18], esi
jne 0x52c525
jmp 0x52c576
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x74], esi
test ecx, ecx
je 0x52c5e8
cmp edx, ecx
lea edx, [esp + 0x5c]
jne 0x52c607
mov dword [esp + 0x5c], 0
mov ecx, dword [esp + 0x78]
xor edi, edi
test ecx, ecx
je 0x52c77e
cmp dword [esp + 0x24], ecx
mov esi, dword [esp]
lea edx, [esp + 0x78]
je 0x52c790
lea esi, [ecx + 1]
mov edi, ecx
mov dword [edx], esi
mov esi, dword [esp]
inc esi
jmp 0x52c790
mov eax, 0x12
mov byte [esp + 0x38], 3
nop word cs:[eax + eax]
nop dword [eax + eax]
mov esi, dword [ebp + 0xc]
inc word [esp + eax*2 + 0xc0]
mov dword [esp + 0x14], edx
cmp ecx, dword [esi + 0x6a4]
jne 0x52c65b
mov edx, ecx
mov ecx, dword [esp + 0xbc]
call fcn.00594c20
mov ecx, dword [esi + 0x6a8]
mov dl, byte [esp + 0x38]
mov eax, dword [esi + 0x6a0]
mov byte [eax + ecx*2], dl
mov byte [eax + ecx*2 + 1], bh
inc ecx
xor eax, eax
cmp byte [esp + 4], bl
mov dword [esi + 0x6a8], ecx
mov esi, dword [esp + 0x18]
mov dword [esp + 0x28], ecx
je 0x52c3fb
mov al, byte [esp + 4]
test al, al
je 0x52c6f4
movzx ecx, al
cmp al, 0x12
ja 0x52e212
inc word [esp + ecx*2 + 0xc0]
mov edx, dword [esp + 0x28]
mov ecx, dword [ebp + 0xc]
cmp edx, dword [ecx + 0x6a4]
jne 0x52c6ca
mov ecx, dword [esp + 0xbc]
mov ebx, esi
call fcn.00594c20
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0x6a8]
jmp 0x52c6cc
mov ebx, esi
mov eax, dword [ecx + 0x6a0]
mov esi, ecx
mov cl, byte [esp + 4]
mov byte [eax + edx*2], 0
mov byte [eax + edx*2 + 1], cl
inc edx
xor eax, eax
mov dword [esi + 0x6a8], edx
mov dword [esp + 0x28], edx
mov esi, ebx
jmp 0x52c3fb
cmp byte [esp + 0x74], 0
je 0x52c755
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x52c715
cmp dword [esp + 0x2c], eax
lea edx, [esp + 0x5c]
jne 0x52c732
mov dword [esp + 0x5c], 0
mov eax, dword [esp + 0x78]
test eax, eax
je 0x52c989
cmp dword [esp + 0x24], eax
lea edx, [esp + 0x78]
mov ecx, edi
mov ebx, 0
je 0x52c73c
lea ecx, [eax + 1]
mov ebx, eax
mov dword [edx], ecx
lea ecx, [edi + 1]
mov dword [esp], edi
mov esi, 1
mov edi, ecx
jmp 0x52c75b
mov dword [esp + 0x74], esi
mov esi, dword [esp]
xor edi, edi
mov al, bh
jmp 0x52c790
mov ebx, dword [esp + 0x14]
mov ecx, edi
mov dword [esp + 0xc], ebx
mov al, 1
test ebx, ebx
mov dword [esp + 0x14], ebx
jne 0x52c3fb
mov edi, ecx
mov dword [esp + 0x14], 0
xor ecx, ecx
jmp 0x52c69a
mov esi, dword [esp]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ch, byte [esp + 4]
mov dword [esp + 0x38], esi
cmp ch, bl
sete dl
test edi, edi
sete cl
test ch, ch
je 0x52c7b1
mov ebx, 1
mov dword [esp + 0xc], edi
jmp 0x52c7bb
xor ebx, ebx
test edi, edi
mov dword [esp + 0xc], edi
je 0x52c7a6
movzx eax, al
mov esi, ebx
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0xa0]
add esi, eax
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0xb0]
mov dword [esp + 0xb4], edi
mov dword [esp + 0x90], esi
je 0x52c968
and cl, dl
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x38]
sub edx, eax
movzx eax, cl
add eax, edx
mov edx, dword [esp + 0x28]
jmp 0x52c834
mov eax, dword [ecx + 0x6a0]
mov byte [eax + edx*2], 0
mov byte [eax + edx*2 + 1], bl
inc edx
xor eax, eax
cmp dword [esp + 0x18], 0
mov ebx, esi
mov dword [ecx + 0x6a8], edx
je 0x52c976
test eax, eax
mov dword [esp + 0x28], edx
je 0x52c8a0
mov ecx, dword [esp + 0x90]
dec eax
test ecx, ecx
je 0x52c868
mov edi, dword [esp + 0x2c]
mov esi, edi
sub esi, ecx
cmp esi, eax
mov edx, esi
cmova edx, eax
cmp esi, eax
jae 0x52c8ba
sub eax, edx
mov dword [esp + 0x90], 0
mov ecx, dword [esp + 0xb4]
test ecx, ecx
je 0x52c968
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
mov edx, esi
sub edx, ecx
lea ecx, [eax + ecx + 1]
cmp edx, eax
cmovbe ecx, esi
mov dword [esp + 0xb4], ecx
test ecx, ecx
jne 0x52c8f3
jmp 0x52c972
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0x52c8e8
cmp dword [esp + 0x2c], ecx
lea eax, [esp + 0x90]
jne 0x52c900
jmp 0x52c8dd
add ecx, edx
cmp ecx, edi
je 0x52c94c
mov edi, dword [esp + 0x38]
inc ecx
mov dword [esp + 0x90], ecx
cmp dword [esp + 0x2c], ecx
lea eax, [esp + 0x90]
jne 0x52c900
mov dword [esp + 0x90], 0
mov ecx, dword [esp + 0xb4]
test ecx, ecx
je 0x52c972
cmp dword [esp + 0x24], ecx
lea eax, [esp + 0xb4]
je 0x52c972
lea edx, [ecx + 1]
mov esi, ebx
mov dword [eax], edx
movzx ebx, byte [ecx]
cmp ebx, 0x12
ja 0x52e210
mov edx, dword [esp + 0x28]
mov ecx, dword [ebp + 0xc]
dec dword [esp + 0x18]
inc word [esp + ebx*2 + 0xc0]
cmp edx, dword [ecx + 0x6a4]
jne 0x52c810
mov ecx, dword [esp + 0xbc]
call fcn.00594c20
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0x6a8]
jmp 0x52c810
xor eax, eax
mov dword [esp + 0x90], 0
mov ecx, dword [esp + 0xb4]
test ecx, ecx
jne 0x52c877
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x38]
jmp 0x52c976
mov edx, dword [esp + 0x28]
xor bl, 1
mov dword [esp + 0x28], edx
mov esi, 1
mov eax, ebx
jmp 0x52c3fb
mov ecx, edi
xor ebx, ebx
jmp 0x52c73c
mov eax, dword [0x6f1130]
test eax, eax
jne 0x52c9bb
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x52e338
mov dword [0x6f1130], eax
push 0x13
push 8
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x52e338
mov esi, eax
mov edx, 0x13
lea ecx, [esp + 0xc0]
push 0x13
push eax
push dword [esp + 0x100]
push 7
call fcn.00467640
add esp, 0x10
xor edx, edx
cmp byte [esi + 0xf], 0
mov eax, 0
jne 0x52cae0
cmp byte [esi + 1], 0
mov eax, 0xffffffff
jne 0x52cae0
cmp byte [esi + 0xe], 0
mov eax, 0xfffffffe
jne 0x52cae0
cmp byte [esi + 2], 0
mov eax, 0xfffffffd
jne 0x52cae0
cmp byte [esi + 0xd], 0
mov eax, 0xfffffffc
jne 0x52cae0
cmp byte [esi + 3], 0
mov eax, 0xfffffffb
jne 0x52cae0
cmp byte [esi + 0xc], 0
mov eax, 0xfffffffa
jne 0x52cae0
cmp byte [esi + 4], 0
mov eax, 0xfffffff9
jne 0x52cae0
cmp byte [esi + 0xb], 0
mov eax, 0xfffffff8
jne 0x52cae0
cmp byte [esi + 5], 0
mov eax, 0xfffffff7
jne 0x52cae0
cmp byte [esi + 0xa], 0
mov eax, 0xfffffff6
jne 0x52cae0
cmp byte [esi + 6], 0
mov eax, 0xfffffff5
jne 0x52cae0
cmp byte [esi + 9], 0
mov eax, 0xfffffff4
jne 0x52cae0
cmp byte [esi + 7], 0
mov eax, 0xfffffff3
jne 0x52cae0
cmp byte [esi + 8], 0
mov eax, 0xfffffff2
jne 0x52cae0
cmp byte [esi], 0
mov eax, 0xfffffff1
jne 0x52cae0
cmp byte [esi + 0x12], 0
mov eax, 0xfffffff0
jne 0x52cae0
cmp byte [esi + 0x11], 0
mov eax, 0xffffffef
jne 0x52cae0
cmp byte [esi + 0x10], 1
mov eax, 0xffffffee
sbb eax, 0
nop
mov dword [esp + 0x28], esi
movdqa xmm7, xmmword [0x607190]
mov esi, dword [esp + 0x34]
add eax, 0x13
xor ebx, ebx
mov dword [esp + 4], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x38], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp ebx, 0x101
mov eax, 0x101
mov ecx, ebx
cmovb eax, ebx
sub ecx, eax
neg al
movzx eax, al
movzx ecx, cl
add eax, ebx
cmp al, 0x1d
jae 0x52e1d0
mov eax, dword [ebp + 0xc]
movzx ecx, byte [ecx + 0x61bf14]
mov dword [esp], edx
movzx edi, word [eax + ebx*2 + 0x41c]
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax + ebx + 0x2d0]
add eax, ecx
mul edi
add dword [esp + 0x18], eax
movzx eax, byte [ebx + str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b]
lea ebx, [ebx + 1]
adc dword [esp + 0xc], edx
add eax, ecx
mul edi
mov edi, dword [ebp + 0xc]
add dword [esp + 4], eax
adc dword [esp], edx
cmp esi, ebx
mov edx, dword [esp]
jne 0x52cb20
mov ecx, dword [esp + 0x10]
cmp ecx, 2
jae 0x52cbc0
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0x14], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], 0
jmp 0x52ce10
movdqa xmm2, xmmword [0x607180]
and ecx, 0x3e
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
nop word cs:[eax + eax]
nop
movdqa xmm5, xmm2
movdqa xmm4, xmm2
movzx edx, word [edi + eax + 0x3f0]
pcmpeqd xmm6, xmm6
pminub xmm5, xmmword [0x6071a0]
psrlw xmm4, 1
pand xmm4, xmm7
movd xmm3, edx
movzx edx, word [eax + str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b]
pcmpeqb xmm5, xmm2
paddb xmm2, xmmword [0x6071b0]
pxor xmm5, xmm6
pxor xmm6, xmm6
paddb xmm5, xmm4
movd xmm4, dword [edi + eax*2 + 0x658]
punpcklbw xmm3, xmm6
add eax, 2
punpcklbw xmm5, xmm6
punpcklwd xmm3, xmm6
cmp ecx, eax
punpcklwd xmm5, xmm6
pshufd xmm3, xmm3, 0xd4
punpckldq xmm5, xmm6
punpcklwd xmm4, xmm6
paddq xmm3, xmm5
punpckldq xmm4, xmm6
pmuludq xmm3, xmm4
paddq xmm1, xmm3
movd xmm3, edx
punpcklbw xmm3, xmm6
punpcklwd xmm3, xmm6
pshufd xmm3, xmm3, 0xd4
paddq xmm3, xmm5
pmuludq xmm3, xmm4
paddq xmm0, xmm3
jne 0x52cbe0
pshufd xmm2, xmm1, 0xee
paddq xmm2, xmm1
pshufd xmm1, xmm2, 0x55
movd dword [esp + 0x2c], xmm2
pshufd xmm2, xmm0, 0xee
paddq xmm2, xmm0
movd ebx, xmm1
pshufd xmm0, xmm2, 0x55
movd dword [esp + 0x14], xmm2
movd dword [esp + 0x24], xmm0
jmp 0x52ce53
mov edx, dword [esp + 0x44]
xor eax, eax
add edx, dword [esp + 4]
jmp 0x52bcc8
mov dword [esp + 0x50], 0
mov al, 1
mov dword [esp + 0x68], 0
jmp 0x52be4a
mov edx, dword [esp + 0x14]
xor eax, eax
inc edx
jmp 0x52bcc8
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
neg ecx
add ecx, edx
test al, al
cmove ecx, ebx
cmp byte [ebp + 0x10], 1
mov dword [esp + 0x68], ecx
jne 0x52cd7e
mov ecx, dword [ebp + 0xc]
add ebx, 0xffff8000
test al, al
cmove edx, ebx
mov dword [ecx + 0x10], edx
mov byte [ecx + 0x27], 1
jmp 0x52cd87
mov ecx, dword [esp + 0x94]
mov edi, edx
mov edx, esi
push dword [esp + 0x58]
call fcn.005f2340
mov edx, edi
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x34]
add esp, 4
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 0x38]
lea ebx, [esi + ecx]
jmp 0x52aacd
mov ecx, dword [esp + 0x94]
mov edx, esi
push edi
call fcn.005f2340
mov edx, dword [esp + 0xa8]
add esp, 4
mov esi, dword [ebx + 0x38]
jmp 0x52aa8b
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x40]
jmp 0x52bcc8
mov eax, dword [ebp + 0xc]
mov word [eax + 0x24], 0x100
mov al, 1
mov dword [esp + 0x50], eax
jmp 0x52be48
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x44]
cmp eax, esi
cmovae eax, esi
cmp eax, ecx
cmovae eax, ecx
sub esi, eax
sub edx, eax
mov eax, 1
cmp esi, 1
cmovae esi, eax
sub edx, esi
add edx, dword [esp + 4]
mov eax, edx
mov edx, dword [esp + 0x34]
jmp 0x52bcc8
mov edx, eax
mov eax, dword [esp + 0x40]
jmp 0x52bcc8
mov edx, dword [esp + 0x44]
add edx, dword [esp + 0x6c]
lea edx, [ecx + edx - 1]
jmp 0x52bcc8
xor eax, eax
mov edx, 1
jmp 0x52bcc8
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 4]
lea edx, [eax + ecx + 1]
jmp 0x52bcc6
mov edx, dword [ebp + 0xc]
movzx eax, byte [edi + ecx + 0x3f0]
movzx edi, word [edx + ecx*2 + 0x658]
mov edx, ecx
shr dl, 1
cmp cl, 2
adc dl, 0xff
movzx esi, dl
add eax, esi
mul edi
add dword [esp + 0x2c], eax
movzx eax, byte [ecx + str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b]
lea ecx, [ecx + 1]
adc ebx, edx
add eax, esi
mul edi
mov edi, dword [ebp + 0xc]
add dword [esp + 0x14], eax
adc dword [esp + 0x24], edx
cmp dword [esp + 0x10], ecx
jne 0x52ce10
mov edi, dword [esp + 0x28]
movzx eax, word [esp + 0xc0]
movzx ecx, byte [edi]
movzx edx, byte [edi + 1]
movzx esi, byte [edi + 5]
imul ecx, eax
movzx eax, word [esp + 0xc2]
imul edx, eax
movzx eax, word [esp + 0xc4]
add edx, ecx
movzx ecx, byte [edi + 2]
imul ecx, eax
movzx eax, word [esp + 0xc6]
add ecx, edx
movzx edx, byte [edi + 3]
imul edx, eax
movzx eax, word [esp + 0xc8]
add edx, ecx
movzx ecx, byte [edi + 4]
imul ecx, eax
movzx eax, word [esp + 0xca]
add ecx, edx
imul esi, eax
movzx eax, byte [edi + 6]
add esi, ecx
movzx ecx, word [esp + 0xcc]
mul ecx
movzx ecx, word [esp + 0xce]
add eax, esi
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 7]
adc edx, 0
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xd0]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 8]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xd2]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 9]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xd4]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xa]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xd6]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xb]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xd8]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xc]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xda]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xd]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xdc]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xe]
adc edx, esi
mov esi, edx
mul ecx
movzx ecx, word [esp + 0xde]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0xf]
adc edx, esi
mov dword [esp + 0x34], edx
mul ecx
movzx ecx, word [esp + 0xe0]
add eax, dword [esp + 0x10]
mov esi, edx
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0x10]
adc esi, dword [esp + 0x34]
add eax, 3
mul ecx
movzx ecx, word [esp + 0xe2]
add eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 0x11]
adc edx, esi
mov esi, edx
add eax, 3
mul ecx
movzx ecx, word [esp + 0xe4]
add eax, dword [esp + 0x10]
mov dword [esp + 0x34], eax
movzx eax, byte [edi + 0x12]
adc edx, esi
mov dword [esp + 0x10], edx
add eax, 7
mul ecx
mov ecx, 3
mov edi, eax
mov eax, dword [esp + 0x38]
mov esi, edx
add edi, dword [esp + 0x34]
adc esi, dword [esp + 0x10]
mul ecx
add eax, dword [esp + 0x18]
adc edx, dword [esp + 0xc]
add eax, dword [esp + 0x2c]
adc edx, ebx
add eax, edi
mov edi, dword [esp + 0x58]
mov ebx, dword [esp + 0x4c]
adc edx, esi
add eax, 0xe
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
adc edx, 0
mov dword [esp + 0xc], edx
mov ecx, ebx
add eax, dword [esp + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
adc eax, dword [esp]
mov dword [esp + 0x24], eax
mov eax, edi
sub eax, 1
sbb ecx, 0
jb 0x52e37b
push 0
push 0x7fff
push ecx
push eax
call fcn.006025ac
add esp, 0x10
mov ecx, edx
lea esi, [eax*4]
shld ecx, eax, 2
add eax, edi
mov edi, dword [esp + 0x24]
adc ebx, edx
mov dl, byte [esp + 0x8c]
add eax, esi
mov esi, dword [esp + 0xc]
adc ebx, ecx
shld ebx, eax, 3
shl eax, 3
and dl, 7
cmp dl, 6
setae cl
shl cl, 3
sub cl, dl
add cl, 5
movzx edx, cl
mov ecx, dword [esp + 0x18]
add edx, eax
mov eax, edi
adc ebx, 0
add edx, 0x20
adc ebx, 0
cmp dword [esp + 0x14], ecx
mov dword [esp + 0x4c], ebx
sbb eax, esi
mov eax, ebx
cmovb ecx, dword [esp + 0x14]
cmovb esi, edi
mov dword [esp + 0xc], esi
cmp edx, ecx
mov dword [esp + 0x18], ecx
sbb eax, esi
cmovb esi, ebx
mov ebx, ecx
cmovb ebx, edx
xor esi, edi
mov edi, dword [esp + 0x30]
xor ebx, dword [esp + 0x14]
mov eax, ebx
or eax, esi
je 0x52d210
cmp dword [esp + 0x18], edx
mov eax, dword [esp + 0x4c]
sbb dword [esp + 0xc], eax
jae 0x52d210
movzx edx, byte [esp + 0x44]
mov cl, byte [edi]
mov eax, dword [esp + 8]
or edx, 4
shl edx, cl
add cl, 3
or edx, dword [eax]
cmp cl, 0xf
mov dword [eax], edx
mov dword [esp], edx
mov byte [edi], cl
jbe 0x52d289
mov eax, dword [esp + 0x1c]
pxor xmm0, xmm0
mov edx, dword [eax]
jmp 0x52d189
mov eax, dword [esi]
shr ecx, 0x10
mov dword [esp], ecx
mov byte [eax + edx], bh
inc edx
mov eax, dword [esp + 8]
mov dword [edi], edx
mov edi, dword [esp + 0x30]
mov dword [eax], ecx
movzx ecx, byte [edi]
add cl, 0xf0
cmp cl, 0xf
mov byte [edi], cl
jbe 0x52d28d
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp edx, eax
jne 0x52d1c0
mov esi, dword [esp + 0x20]
mov ebx, ecx
mov ecx, esi
call fcn.005bab80
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
pxor xmm0, xmm0
mov eax, dword [eax]
mov edx, dword [edi]
mov dword [esp + 4], eax
mov eax, dword [ebx]
mov ebx, dword [esp]
jmp 0x52d1cf
mov ebx, dword [esp]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov dword [esp + 4], ebx
mov ecx, dword [esi]
mov byte [ecx + edx], bl
mov ebx, dword [esp + 4]
inc edx
cmp edx, eax
mov dword [edi], edx
mov ecx, ebx
jne 0x52d160
mov ecx, esi
mov edx, eax
call fcn.005bab80
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
pxor xmm0, xmm0
mov edx, dword [edi]
mov ecx, dword [eax]
jmp 0x52d160
push dword [esp + 0x28]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
or ebx, esi
jne 0x52d230
mov cl, byte [edi]
mov dl, byte [esp + 0x44]
jmp 0x52beac
mov ebx, dword [esp + 0x68]
mov esi, dword [ebp + 0xc]
mov eax, 0
mov ecx, ebx
sub ecx, dword [esp + 0x58]
cmovb ecx, eax
jb 0x52e42d
mov edx, ebx
sub edx, ecx
jb 0x52e41c
mov eax, dword [esi + 0x38]
cmp ebx, eax
ja 0x52e409
cmp byte [esp + 0x44], 0
setne al
cmp byte [ebp + 0x10], 5
sete ah
add ecx, dword [esi + 0x30]
and ah, al
movzx eax, ah
push eax
push dword [esp + 0x24]
call fcn.004673b0
add esp, 8
jmp 0x52e006
pxor xmm0, xmm0
mov eax, dword [ebp + 0xc]
xor esi, esi
mov edx, dword [eax + 0x6a0]
mov ebx, dword [eax + 0x6a8]
mov dword [esp + 0x18], edx
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ebp + 0xc]
cmp byte [eax + esi + 0x3ef], 0
jne 0x52d2cd
dec esi
cmp esi, 0xfffffee0
jne 0x52d2b0
mov edx, 0x101
jmp 0x52d2ef
lea eax, [esi + 0x120]
mov edx, 0x101
cmp eax, 0x102
jb 0x52d2ef
neg esi
cmp esi, 0x121
jae 0x52e446
mov edx, eax
mov eax, dword [ebp + 0xc]
xor esi, esi
mov dword [esp + 0x14], ebx
cmp byte [eax + 0x40f], 0
jne 0x52d510
cmp byte [eax + 0x40e], 0
mov esi, 0xffffffff
jne 0x52d510
cmp byte [eax + 0x40d], 0
mov esi, 0xfffffffe
jne 0x52d510
cmp byte [eax + 0x40c], 0
mov esi, 0xfffffffd
jne 0x52d510
cmp byte [eax + 0x40b], 0
mov esi, 0xfffffffc
jne 0x52d510
cmp byte [eax + 0x40a], 0
mov esi, 0xfffffffb
jne 0x52d510
cmp byte [eax + 0x409], 0
mov esi, 0xfffffffa
jne 0x52d510
cmp byte [eax + 0x408], 0
mov esi, 0xfffffff9
jne 0x52d510
cmp byte [eax + 0x407], 0
mov esi, 0xfffffff8
jne 0x52d510
cmp byte [eax + 0x406], 0
mov esi, 0xfffffff7
jne 0x52d510
cmp byte [eax + 0x405], 0
mov esi, 0xfffffff6
jne 0x52d510
cmp byte [eax + 0x404], 0
mov esi, 0xfffffff5
jne 0x52d510
cmp byte [eax + 0x403], 0
mov esi, 0xfffffff4
jne 0x52d510
cmp byte [eax + 0x402], 0
mov esi, 0xfffffff3
jne 0x52d510
cmp byte [eax + 0x401], 0
mov esi, 0xfffffff2
jne 0x52d510
cmp byte [eax + 0x400], 0
mov esi, 0xfffffff1
jne 0x52d510
cmp byte [eax + 0x3ff], 0
mov esi, 0xfffffff0
jne 0x52d510
cmp byte [eax + 0x3fe], 0
mov esi, 0xffffffef
jne 0x52d510
cmp byte [eax + 0x3fd], 0
mov esi, 0xffffffee
jne 0x52d510
cmp byte [eax + 0x3fc], 0
mov esi, 0xffffffed
jne 0x52d510
cmp byte [eax + 0x3fb], 0
mov esi, 0xffffffec
jne 0x52d510
cmp byte [eax + 0x3fa], 0
mov esi, 0xffffffeb
jne 0x52d510
cmp byte [eax + 0x3f9], 0
mov esi, 0xffffffea
jne 0x52d510
cmp byte [eax + 0x3f8], 0
mov esi, 0xffffffe9
jne 0x52d510
cmp byte [eax + 0x3f7], 0
mov esi, 0xffffffe8
jne 0x52d510
cmp byte [eax + 0x3f6], 0
mov esi, 0xffffffe7
jne 0x52d510
cmp byte [eax + 0x3f5], 0
mov esi, 0xffffffe6
jne 0x52d510
cmp byte [eax + 0x3f4], 0
mov esi, 0xffffffe5
jne 0x52d510
cmp byte [eax + 0x3f3], 0
mov esi, 0xffffffe4
jne 0x52d510
cmp byte [eax + 0x3f2], 0
mov esi, 0xffffffe3
jne 0x52d510
cmp byte [eax + 0x3f1], 0
mov esi, 0xffffffe2
je 0x52d950
nop word cs:[eax + eax]
nop
cmp edx, 0x11e
ja 0x52e3f0
add esi, 0x20
cmp esi, 0x1f
mov dword [esp + 4], esi
jae 0x52e3d7
add edx, 0xfeff
mov eax, dword [esp + 8]
movzx ebx, dx
shl ebx, cl
add cl, 5
or ebx, dword [esp]
cmp cl, 0x10
mov dword [eax], ebx
mov byte [edi], cl
jb 0x52d600
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
jmp 0x52d582
mov eax, dword [esi]
shr ebx, 0x10
mov byte [eax + edx], ch
inc edx
mov eax, dword [esp + 8]
mov dword [edi], edx
mov edi, dword [esp + 0x30]
mov dword [eax], ebx
movzx ecx, byte [edi]
add cl, 0xf0
cmp cl, 0xf
mov byte [edi], cl
jbe 0x52d600
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp edx, eax
jne 0x52d5c0
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.005bab80
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
pxor xmm0, xmm0
mov eax, dword [eax]
mov edx, dword [edi]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
jmp 0x52d5cb
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov dword [esp], ebx
mov ecx, dword [esi]
mov byte [ecx + edx], bl
mov ecx, dword [esp]
inc edx
cmp edx, eax
mov dword [edi], edx
mov ebx, ecx
jne 0x52d560
mov edi, ecx
mov ecx, esi
mov edx, eax
call fcn.005bab80
mov ecx, edi
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
pxor xmm0, xmm0
mov edx, dword [edi]
mov ebx, dword [eax]
jmp 0x52d560
mov eax, dword [esp + 4]
mov esi, dword [esp + 8]
dec eax
movzx edx, ax
shl edx, cl
add cl, 5
or edx, ebx
cmp cl, 0x10
mov ebx, edx
mov dword [esi], edx
mov byte [edi], cl
jb 0x52d6d0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
jmp 0x52d654
mov eax, dword [esi]
shr ecx, 0x10
mov byte [eax + edx], bh
inc edx
mov eax, dword [esp + 8]
mov ebx, ecx
mov dword [edi], edx
mov edi, dword [esp + 0x30]
mov dword [eax], ecx
movzx ecx, byte [edi]
add cl, 0xf0
cmp cl, 0xf
mov byte [edi], cl
jbe 0x52d6d0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp edx, eax
jne 0x52d690
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.005bab80
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
pxor xmm0, xmm0
mov eax, dword [eax]
mov edx, dword [edi]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
jmp 0x52d69b
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov dword [esp], ebx
mov ecx, dword [esi]
mov byte [ecx + edx], bl
mov ebx, dword [esp]
inc edx
cmp edx, eax
mov dword [edi], edx
mov ecx, ebx
jne 0x52d630
mov ecx, esi
mov edx, eax
call fcn.005bab80
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
pxor xmm0, xmm0
mov edx, dword [edi]
mov ecx, dword [eax]
jmp 0x52d630
mov eax, dword [esp + 0x38]
mov edx, 0
mov esi, dword [esp + 8]
sub eax, 4
cmovb eax, edx
movzx edx, ax
shl edx, cl
add cl, 4
or edx, ebx
cmp cl, 0x10
mov dword [esi], edx
mov dword [esp], edx
mov byte [edi], cl
jb 0x52d7b0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
jmp 0x52d739
mov eax, dword [esi]
shr ecx, 0x10
pxor xmm0, xmm0
mov dword [esp], ecx
mov byte [eax + edx], bh
inc edx
mov eax, dword [esp + 8]
mov dword [edi], edx
mov edi, dword [esp + 0x30]
mov dword [eax], ecx
movzx ecx, byte [edi]
add cl, 0xf0
cmp cl, 0xf
mov byte [edi], cl
jbe 0x52d7b0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp edx, eax
jne 0x52d770
mov esi, dword [esp + 0x20]
mov ebx, ecx
mov ecx, esi
call fcn.005bab80
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
mov eax, dword [eax]
mov edx, dword [edi]
mov dword [esp + 4], eax
mov eax, dword [ebx]
mov ebx, dword [esp]
jmp 0x52d77f
mov ebx, dword [esp]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov dword [esp + 4], ebx
mov ecx, dword [esi]
mov byte [ecx + edx], bl
mov ebx, dword [esp + 4]
inc edx
cmp edx, eax
mov dword [edi], edx
mov ecx, ebx
jne 0x52d710
mov ecx, esi
mov edx, eax
call fcn.005bab80
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
mov edx, dword [edi]
mov ecx, dword [eax]
jmp 0x52d710
mov edx, dword [esp + 0x38]
test edx, edx
je 0x52d8c0
lea eax, [edx + 0x685ec8]
mov esi, 0x685ec8
mov dword [esp + 0xc], eax
jmp 0x52d7e1
mov esi, dword [esp + 4]
mov dword [esp], ebx
cmp esi, dword [esp + 0xc]
je 0x52d8c0
movzx eax, byte [esi]
cmp eax, 0x13
jae 0x52e1e4
mov edx, dword [esp + 0x28]
inc esi
mov dword [esp + 4], esi
movzx ebx, byte [edx + eax]
mov eax, dword [esp + 8]
shl ebx, cl
add cl, 3
or ebx, dword [esp]
cmp cl, 0x10
mov dword [eax], ebx
mov byte [edi], cl
jb 0x52d7d0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
jmp 0x52d842
mov eax, dword [edi]
mov edi, dword [esp + 0x30]
shr ebx, 0x10
mov byte [eax + edx], ch
inc edx
mov dword [esi], edx
mov esi, dword [esp + 8]
mov dword [esi], ebx
movzx ecx, byte [edi]
add cl, 0xf0
cmp cl, 0xf
mov byte [edi], cl
jbe 0x52d7d0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp edx, eax
jne 0x52d880
mov edi, dword [esp + 0x20]
mov ecx, edi
call fcn.005bab80
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x1c]
pxor xmm0, xmm0
mov eax, dword [eax]
mov edx, dword [esi]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
jmp 0x52d88b
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov dword [esp], ebx
mov ecx, dword [edi]
mov byte [ecx + edx], bl
mov ecx, dword [esp]
inc edx
cmp edx, eax
mov dword [esi], edx
mov ebx, ecx
jne 0x52d820
mov esi, ecx
mov ecx, edi
mov edx, eax
call fcn.005bab80
mov ecx, esi
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
pxor xmm0, xmm0
mov edx, dword [esi]
mov ebx, dword [eax]
jmp 0x52d820
mov edx, 0x13
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
mov dword [esp + 0xe2], 0
mov dword [esp + 0xde], 0
lea ecx, [esp + 0xc0]
push 0x13
push dword [esp + 0x2c]
call fcn.004684d0
add esp, 8
cmp dword [esp + 0x14], 0
mov esi, dword [ebp + 0xc]
mov edx, dword [esp + 0x18]
je 0x52dfa0
movzx eax, word [esp + 0xe4]
lea esi, [edx + 2]
mov dword [esp + 0x2c], eax
movzx eax, word [esp + 0xe2]
mov dword [esp + 0x10], eax
movzx eax, word [esp + 0xe0]
mov dword [esp + 0x38], eax
movzx eax, byte [edx]
mov ecx, dword [eax*4 + 0x52e4a0]
mov eax, edx
add ecx, dword [esp + 0x100]
jmp ecx
cmp byte [eax + 0x3f0], 0
mov ah, 1
setne al
test ah, ah
jne 0x52d98c
mov edi, dword [esp + 0x30]
cmp edx, 0x11e
pxor xmm0, xmm0
ja 0x52e3f0
xor ebx, ebx
mov bl, al
mov esi, ebx
cmp esi, 0x1f
mov dword [esp + 4], esi
jb 0x52d52c
jmp 0x52e3d7
mov edi, dword [esp + 0x30]
cmp edx, 0x11f
pxor xmm0, xmm0
mov dword [esp + 4], 1
jb 0x52d52c
jmp 0x52e3f0
mov ecx, dword [esp + 0xf4]
mov edx, 0x120
push 0x120
push dword [esp + 0xf4]
call fcn.004684d0
add esp, 8
mov ecx, dword [esp + 0xec]
mov edx, 0x20
push 0x20
push dword [esp + 0xa4]
call fcn.004684d0
add esp, 8
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
mov edx, dword [edx]
push dword [esp + 0x20]
call fcn.00466f10
add esp, 4
push dword [esp + 0x28]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
push 0x278
push 0
push dword [esp + 0x104]
call sub.msvcrt.dll_memset
add esp, 0xc
cmp byte [esp + 0x50], 0
mov word [esi + 0x61c], 1
mov dword [esi + 0x418], 0
mov dword [esi + 4], 0
mov dword [esi], 0
jne 0x52e13e
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0x80]
add edx, dword [esp + 0x40]
cmp byte [esi + 0x6c3], 0
mov dword [esp + 0x58], eax
je 0x52a930
jmp 0x52a735
mov eax, dword [ebx + 0x6ac]
test eax, eax
je 0x52e45c
mov ecx, dword [ebx + 0x6b8]
cmp esi, ecx
jb 0x52e475
mov edx, ebx
mov edi, dword [ebx + 0x3c]
mov ebx, dword [ebx + 0x6b4]
mov dword [esp + 8], ecx
mov edx, dword [edx + 0x6b0]
add ecx, edi
add edi, esi
sub edi, ecx
sub edx, ebx
mov dword [esp + 0x3c], ecx
cmp edx, edi
jb 0x52e226
add eax, ebx
push edi
push dword [esp + 0x40]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, edi
mov eax, dword [ebp + 0xc]
cmp esi, dword [esp + 8]
mov dword [eax + 0x6b4], ebx
jb 0x52e486
mov byte [eax + 0x6c3], 0
mov dword [eax + 0x6b8], 0
mov dword [eax + 0x44], 0
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0xac]
test eax, eax
jne 0x52a83f
mov ecx, 0x23
mov edx, 0x685168
push 0x15
call fcn.004cb170
add esp, 4
mov dword [esi + 4], eax
mov dword [esi + 8], edx
mov eax, 1
jmp 0x52a844
mov esi, dword [esp + 0xac]
mov eax, dword [esp + 0x9c]
jmp 0x52a83f
cmp byte [ebp + 0x10], 1
jne 0x52e18d
mov ecx, str._cargo_registry_src_github.com_1ecc6299db9ec823_utfx_0.1.0_src_ucstr.rs
xor edx, edx
push 0
push dword [esp + 0x24]
call fcn.004673b0
add esp, 8
mov byte [esi + 0x6c3], 1
jmp 0x52a735
mov eax, dword [ebp + 0xc]
mov edx, ebx
lea ecx, [eax + 0x6ac]
push edi
call fcn.005f2340
add esp, 4
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x6ac]
mov ebx, dword [ecx + 0x6b4]
jmp 0x52a7e5
cmp byte [esi + 0x25], 0
jne 0x52a735
mov ecx, dword [esp + 0x20]
call fcn.00466d50
mov ecx, dword [esp + 0x20]
mov edx, 3
push 3
call fcn.004667e0
add esp, 4
mov edx, dword [esi + 0x250]
mov ecx, dword [esp + 0x20]
push dword [esi + 0x3d0]
call fcn.004667e0
add esp, 4
jmp 0x52a735
mov edx, 0x1d
push 0x61bf84
call fcn.0045a150
add esp, 4
ud2
mov ecx, eax
mov edx, 0x13
push 0x61baf4
call fcn.0045a150
add esp, 4
ud2
mov ecx, ebx
mov edx, 0x13
push 0x61bde4
call fcn.0045a150
add esp, 4
ud2
mov eax, dword [ebp + 0xc]
mov edx, ebx
lea ecx, [eax + 0x6ac]
push edi
call fcn.005f2340
add esp, 4
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x6ac]
mov ebx, dword [ecx + 0x6b4]
jmp 0x52e0b4
add ecx, 0x101
mov edx, 0x11e
push 0x61bd08
call fcn.0045a150
add esp, 4
ud2
xor ecx, ecx
xor edx, edx
push 0x61b810
call fcn.0045a150
add esp, 4
ud2
mov ecx, 1
mov edx, 1
push 0x61b820
call fcn.0045a150
add esp, 4
ud2
add ecx, 0x101
mov edx, 0x11e
push 0x61b830
call fcn.0045a150
add esp, 4
ud2
mov edx, 0x1e
push 0x61b840
call fcn.0045a150
add esp, 4
ud2
mov edx, dword [esp + 0x18]
push 0x61bd60
call fcn.0045a150
add esp, 4
ud2
mov ecx, str.assertion_failed:_writer.buffer_length______window_size__2_
mov edx, 0x3d
push 0x61b800
call fcn.0045aec0
add esp, 4
ud2
push 0x61b7b0
call fcn.0045a820
add esp, 4
ud2
mov ecx, edx
mov edx, ebx
push 0x61bd70
call fcn.0045a820
add esp, 4
ud2
mov ecx, dword [esp + 0x40]
push 0x685180
call fcn.0045a820
add esp, 4
ud2
mov ecx, ebx
mov edx, dword [esp + 0x34]
push 0x61b7a0
call fcn.0045ce70
add esp, 4
ud2
mov ecx, 0x13
mov edx, 1
call fcn.0040a640
ud2
call fcn.00467550
ud2
mov edx, ecx
mov ecx, edi
push 0x61b934
call fcn.0045ab50
add esp, 4
ud2
mov ecx, dword [esp + 0x34]
mov edx, 0x11e
push 0x61ba00
call fcn.0045ab50
add esp, 4
ud2
mov ecx, str.Underflow_calculating_stored_block_length_
mov edx, 0x2a
push 0x61ba3c
call fcn.0045d290
add esp, 4
ud2
mov ecx, 0x6850dc
mov edx, 0xf
push 0x685220
call fcn.0045d290
add esp, 4
ud2
mov edx, edi
push 0x685230
call fcn.0045a820
add esp, 4
ud2
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_532d2b14c05f9bc20b2d27cbb5f4550d28343a36librarycore_src_strpattern.rs
mov edx, 0x2b
push 0x685240
call fcn.0045aec0
add esp, 4
ud2
mov ecx, str.assertion_failed:_distance_lengths.len_____NUM_DISTANCE_CODES
mov edx, 0x3e
push 0x61bae4
call fcn.0045aec0
add esp, 4
ud2
mov ecx, str.assertion_failed:_literal_len_lengths.len_____NUM_LITERALS_AND_LENGTHS
mov edx, 0x47
push 0x61ba94
call fcn.0045aec0
add esp, 4
ud2
mov ecx, ebx
mov edx, eax
push 0x685210
call fcn.0045ab50
add esp, 4
ud2
mov edx, ebx
push 0x685210
call fcn.0045ce70
add esp, 4
ud2
mov ecx, str.Error__Trying_to_output_a_stored_block_with_forgotten_data_if_you_encounter_this_error__please_file_an_issue_
mov edx, 0x6d
push 0x685200
call fcn.004cce80
add esp, 4
ud2
mov ecx, eax
mov edx, 0x120
push 0x61ba00
call fcn.0045ab50
add esp, 4
ud2
mov ecx, 0x6850dc
mov edx, 0xf
push 0x685138
call fcn.0045d290
add esp, 4
ud2
mov edx, esi
push 0x685148
call fcn.0045a820
add esp, 4
ud2
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_532d2b14c05f9bc20b2d27cbb5f4550d28343a36librarycore_src_strpattern.rs
mov edx, 0x2b
push 0x685158
call fcn.0045aec0
add esp, 4
ud2