Function at 0x5713f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
mov eax, dword [0x8d600c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0x14]
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x13c], ecx
mov ecx, 0x14
mov eax, dword [esi + 0x358]
mov ebx, dword [esi + 0x364]
push edi
mov edi, dword [esi + 0x368]
mov dword [ebp - 0x150], edx
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x154], esi
mov esi, dword [esi + 0x36c]
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x128], edi
mov dword [ebp - 0x138], ebx
mov dword [ebp - 0x144], esi
cmp edx, ecx
jbe 0x57148c
inc ecx
movzx eax, cx
cmp eax, edx
jb 0x571467
lea eax, [edx - 0x14]
movzx ecx, ax
lea edi, [esi + 0x28]
shr ecx, 1
mov eax, 0x140014
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [ebp - 0x128]
lea eax, [edx - 0x14]
mov byte [ebp - 0x101], 0
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x118], 0
nop word [eax + eax]
xor edx, edx
mov dword [ebp - 0x10c], 0x14
mov dword [ebp - 0x11c], edx
cmp eax, 0x14
jbe 0x57156b
mov eax, dword [ebp + 0xc]
mov esi, 0x14
add eax, 0xffffffec
mov dword [ebp - 0x140], eax
nop dword [eax]
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + esi*2]
lea eax, [eax + esi*2]
mov dword [ebp - 0x134], eax
mov eax, ecx
cmp eax, dword [ebp - 0x140]
jae 0x571549
nop dword [eax]
imul eax, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov bl, byte [ebp - 0x101]
add eax, esi
cmp byte [eax + edi], bl
mov ebx, dword [ebp - 0x138]
mov edi, dword [ebp - 0x128]
ja 0x57152e
inc ecx
movzx eax, cx
cmp eax, dword [ebp - 0x140]
jb 0x571500
jmp 0x571549
mov esi, dword [ebp - 0x10c]
movzx eax, dx
inc edx
mov word [edi + eax*2], cx
mov word [ebx + eax*2], si
mov eax, dword [ebp - 0x134]
mov word [eax], cx
mov eax, dword [ebp - 0x10c]
inc eax
movzx esi, ax
mov dword [ebp - 0x10c], eax
cmp esi, dword [ebp - 0x114]
jb 0x5714e0
mov dword [ebp - 0x11c], edx
xor eax, eax
xor esi, esi
xor ecx, ecx
mov dword [ebp - 0x108], esi
mov dword [ebp - 0x124], ecx
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x134], eax
cmp ax, dx
jae 0x5716cd
movzx ecx, dx
mov dword [ebp - 0x134], ecx
nop dword [eax + eax]
inc eax
or ecx, 0xffffffff
movzx esi, ax
mov dword [ebp - 0x130], ecx
cmp si, dx
jae 0x5715ff
movzx edx, si
movzx eax, word [ebx + edx*2 - 2]
movzx ecx, word [ebx + edx*2]
sub ecx, eax
cmp ecx, 1
jg 0x5715f3
movzx eax, word [edi + edx*2 - 2]
movzx ecx, word [edi + edx*2]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x11c]
cmp eax, 1
jg 0x5715f9
movzx ecx, si
inc esi
mov dword [ebp - 0x130], ecx
cmp si, dx
jb 0x5715b2
jmp 0x5715ff
mov edx, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x130]
movsx eax, cx
cmp eax, dword [ebp - 0x134]
jge 0x571695
cmp cx, 0xffff
je 0x571695
mov esi, dword [ebp - 0x120]
add eax, 0xfffffffb
mov dword [ebp - 0x10c], eax
movzx eax, si
cmp dword [ebp - 0x10c], eax
jle 0x571695
cmp eax, dword [ebp - 0x10c]
jge 0x57168a
mov ebx, dword [ebp - 0x108]
movzx esi, si
movzx ecx, word [edi + eax*2 + 0xa]
inc esi
movzx eax, word [edi + eax*2]
sub eax, ecx
cdq
mov ecx, eax
movzx eax, bx
xor ecx, edx
inc ebx
sub ecx, edx
mov edx, dword [ebp - 0x148]
mov word [edx + eax*2], cx
movzx eax, cx
add dword [ebp - 0x124], eax
movzx eax, si
cmp eax, dword [ebp - 0x10c]
jl 0x571643
mov ecx, dword [ebp - 0x130]
mov dword [ebp - 0x108], ebx
mov ebx, dword [ebp - 0x138]
mov edx, dword [ebp - 0x11c]
movzx eax, cx
jmp 0x57169b
mov eax, dword [ebp - 0x120]
inc eax
mov dword [ebp - 0x120], eax
cmp ax, dx
jb 0x5715a0
mov esi, dword [ebp - 0x108]
test si, si
je 0x5716c7
mov eax, dword [ebp - 0x124]
xor edx, edx
movzx ecx, si
div ecx
mov ecx, eax
jmp 0x5716cd
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x118]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, si
jae 0x57174a
mov edx, dword [ebp - 0x148]
mov dword [ebp - 0x108], eax
mov ebx, eax
movzx eax, si
mov dword [ebp - 0x134], eax
mov edi, eax
nop
movzx eax, word [edx]
lea edx, [edx + 2]
sub eax, ecx
imul eax, eax
add ebx, eax
sub edi, 1
jne 0x571700
mov ecx, dword [ebp - 0x118]
mov eax, ebx
mov edi, dword [ebp - 0x128]
test si, si
mov dword [ebp - 0x108], ebx
mov esi, ecx
mov ebx, dword [ebp - 0x138]
mov dword [ebp + ecx - 0x100], eax
je 0x571750
cdq
idiv dword [ebp - 0x134]
mov dword [ebp + esi - 0x100], eax
jmp 0x571750
mov esi, dword [ebp - 0x118]
mov ecx, dword [ebp + esi - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x110]
mov dword [ebp + esi - 0x54], eax
jle 0x57178d
test ecx, ecx
jne 0x57178d
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx edx, al
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x12c], edx
jmp 0x571793
mov edx, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add esi, 4
inc al
mov dword [ebp - 0x118], esi
mov byte [ebp - 0x101], al
cmp al, 0x14
mov eax, dword [ebp - 0x114]
jb 0x5714b0
test ecx, ecx
je 0x5717e6
movzx eax, dx
movzx edx, dx
cmp edx, 0x14
jge 0x5717e6
inc eax
cmp ax, 0x14
jb 0x5717c7
mov eax, 0x14
lea edi, [ebp - 0x58]
sub eax, dword [ebp - 0x12c]
lea edi, [edi + edx*4]
movzx ecx, ax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
add esp, 8
test al, al
jne 0x571827
lea ecx, [ebp - 0x54]
mov edx, 0x14
mov eax, dword [ecx]
lea ecx, [ecx + 4]
neg eax
mov dword [ecx - 4], eax
sub edx, 1
jne 0x571805
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
add esp, 8
cmp al, 1
je 0x571848
cmp dword [ebp - 0x110], 1
je 0x571848
mov ecx, dword [ebp - 0x94]
mov esi, dword [ebp - 0xa4]
mov dword [ebp - 0x134], ecx
jmp 0x571854
mov esi, dword [ebp - 0xa8]
mov dword [ebp - 0x134], esi
mov dword [ebp - 0x140], esi
mov ecx, 1
cmp esi, 0x11
jle 0x571942
cmp al, 2
jb 0x571942
movzx eax, al
mov edx, ecx
mov dword [ebp - 0x114], 0x98967f
mov dword [ebp - 0x140], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x57192f
nop word [eax + eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x108], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x114]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x108]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x140]
inc edx
cmp eax, ecx
mov dword [ebp - 0x140], edx
cmovge ebx, ecx
mov dword [ebp - 0x114], ebx
cmp dx, word [ebp - 0x102]
jbe 0x5718a0
mov ebx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x13c]
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x140], eax
mov edx, dword [ebp + 0xc]
mov ecx, 3
cmp edx, ecx
jbe 0x571975
nop
inc ecx
movzx eax, cx
cmp eax, edx
jb 0x571950
mov edi, dword [ebp - 0x144]
lea eax, [edx - 3]
movzx ecx, ax
add edi, 6
shr ecx, 1
mov eax, 0x30003
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor ecx, ecx
lea eax, [edx - 3]
mov dword [ebp - 0x10c], ecx
mov byte [ebp - 0x101], cl
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x124], ecx
xor edi, edi
mov dword [ebp - 0x108], 3
mov dword [ebp - 0x118], edi
cmp eax, 3
jb 0x571a44
mov eax, dword [ebp + 0x10]
mov edx, 3
add eax, 0xfffffffd
mov dword [ebp - 0x114], eax
nop
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + edx*2]
lea eax, [eax + edx*2]
mov dword [ebp - 0x110], eax
mov eax, ecx
cmp eax, dword [ebp - 0x114]
jae 0x571a26
imul edx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
add eax, edx
mov bl, byte [ebp - 0x101]
cmp byte [eax + esi], bl
mov ebx, dword [ebp - 0x138]
mov esi, dword [ebp - 0x128]
ja 0x571a0b
inc ecx
movzx eax, cx
cmp eax, dword [ebp - 0x114]
jb 0x5719e1
jmp 0x571a26
mov edx, dword [ebp - 0x108]
movzx eax, di
inc edi
mov word [esi + eax*2], dx
mov word [ebx + eax*2], cx
mov eax, dword [ebp - 0x110]
mov word [eax], cx
mov eax, dword [ebp - 0x108]
inc eax
movzx edx, ax
mov dword [ebp - 0x108], eax
cmp edx, dword [ebp - 0x130]
jbe 0x5719c0
mov dword [ebp - 0x118], edi
xor edi, edi
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x120], edi
xor eax, eax
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x108], ecx
cmp ax, word [ebp - 0x118]
jae 0x571b97
nop dword [eax + eax]
or eax, 0xffffffff
mov dword [ebp - 0x110], eax
lea eax, [ecx + 1]
movzx esi, ax
cmp si, word [ebp - 0x118]
jae 0x571b73
nop dword [eax]
movzx edi, si
movzx ecx, word [ebx + edi*2 - 2]
movzx eax, word [ebx + edi*2]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg 0x571ad3
mov ecx, dword [ebp - 0x128]
movzx eax, word [ecx + edi*2 - 2]
movzx ecx, word [ecx + edi*2]
sub ecx, eax
cmp ecx, 1
jg 0x571ad3
movzx eax, si
inc esi
mov dword [ebp - 0x110], eax
cmp si, word [ebp - 0x118]
jb 0x571a90
jmp 0x571ad9
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
mov edi, dword [ebp - 0x120]
cmp ax, 0xffff
je 0x571b6d
cwde
lea edx, [eax - 5]
movzx eax, cx
mov dword [ebp - 0x114], edx
cmp edx, eax
jle 0x571b6d
movzx esi, cx
cmp eax, edx
jge 0x571b5c
nop dword [eax + eax]
movzx ecx, word [ebx + eax*2 + 0xa]
inc esi
movzx eax, word [ebx + eax*2]
sub eax, ecx
movzx ecx, di
cdq
inc edi
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x148]
mov word [edx + ecx*2], ax
mov edx, dword [ebp - 0x11c]
movzx eax, ax
add edx, eax
movzx eax, si
mov dword [ebp - 0x11c], edx
cmp eax, dword [ebp - 0x114]
jl 0x571b10
mov eax, dword [ebp - 0x110]
mov dword [ebp - 0x120], edi
movzx ecx, ax
jmp 0x571b73
mov eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0x11c]
movzx ecx, ax
jmp 0x571b73
mov edx, dword [ebp - 0x11c]
inc ecx
mov dword [ebp - 0x108], ecx
cmp cx, word [ebp - 0x118]
jb 0x571a70
test di, di
je 0x571b97
mov eax, edx
movzx ecx, di
xor edx, edx
div ecx
mov edx, eax
mov eax, dword [ebp - 0x124]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, di
jae 0x571c18
mov ecx, dword [ebp - 0x148]
mov dword [ebp - 0x108], eax
mov ebx, eax
movzx eax, di
mov dword [ebp - 0x114], eax
mov esi, eax
nop dword [eax]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
sub eax, edx
imul eax, eax
add ebx, eax
sub esi, 1
jne 0x571bd0
mov edx, dword [ebp - 0x124]
mov eax, ebx
mov dword [ebp - 0x108], ebx
mov ebx, dword [ebp - 0x138]
mov dword [ebp + edx - 0x100], eax
test di, di
je 0x571c1e
cdq
idiv dword [ebp - 0x114]
mov edx, dword [ebp - 0x124]
mov dword [ebp + edx - 0x100], eax
jmp 0x571c1e
mov edx, dword [ebp - 0x124]
mov ecx, dword [ebp + edx - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x10c]
mov dword [ebp + edx - 0x54], eax
jle 0x571c5b
test ecx, ecx
jne 0x571c5b
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx edi, al
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0x12c], edi
jmp 0x571c61
mov edi, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add edx, 4
inc al
mov dword [ebp - 0x124], edx
mov byte [ebp - 0x101], al
cmp al, 0x14
mov eax, dword [ebp - 0x130]
jb 0x571992
test ecx, ecx
je 0x571cb0
movzx edx, di
movzx eax, di
cmp edx, 0x14
jge 0x571cb0
inc eax
cmp ax, 0x14
jb 0x571c95
mov eax, 0x14
sub eax, edi
lea edi, [ebp - 0x58]
movzx ecx, ax
lea edi, [edi + edx*4]
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
add esp, 8
test al, al
jne 0x571cf2
lea ecx, [ebp - 0x54]
mov edx, 0x14
nop
mov eax, dword [ecx]
lea ecx, [ecx + 4]
neg eax
mov dword [ecx - 4], eax
sub edx, 1
jne 0x571cd0
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
add esp, 8
cmp al, 1
je 0x571d13
cmp dword [ebp - 0x10c], 1
je 0x571d13
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0x150], edx
jmp 0x571d19
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x114], ecx
cmp ecx, 0x11
jle 0x571dfc
cmp al, 2
jb 0x571dfc
mov edx, 1
movzx eax, al
mov ecx, edx
mov dword [ebp - 0x108], 0x98967f
mov dword [ebp - 0x114], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x571de9
nop word [eax + eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x10c], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x108]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x10c]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x114]
inc edx
cmp eax, ecx
mov dword [ebp - 0x114], edx
cmovge ebx, ecx
mov dword [ebp - 0x108], ebx
cmp dx, word [ebp - 0x102]
jbe 0x571d60
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x114], ecx
mov esi, dword [ebp + 0xc]
mov ecx, 3
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x144]
cmp esi, ecx
jbe 0x571e58
mov eax, dword [ebp - 0x130]
cmp eax, 0x10
jb 0x571e58
and eax, 0xf
mov edx, esi
sub edx, eax
movsx eax, bx
movd xmm0, eax
mov eax, ecx
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
psubw xmm0, xmmword [0x657da0]
nop dword [eax]
movups xmmword [edi + eax*2], xmm0
lea eax, [ecx + 8]
add ecx, 0x10
movzx eax, ax
movups xmmword [edi + eax*2], xmm0
movzx eax, cx
cmp eax, edx
jb 0x571e40
movzx eax, cx
cmp eax, esi
jae 0x571e6e
lea edx, [ebx - 3]
inc ecx
mov word [edi + eax*2], dx
movzx eax, cx
cmp eax, esi
jb 0x571e62
mov ebx, dword [ebp - 0x138]
xor eax, eax
mov dword [ebp - 0x110], eax
mov byte [ebp - 0x101], al
mov dword [ebp - 0x118], eax
nop dword [eax + eax]
xor esi, esi
mov edi, 3
mov dword [ebp - 0x11c], esi
cmp dword [ebp - 0x130], edi
jbe 0x571f2a
mov edx, edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + edx*2]
lea eax, [eax + edx*2]
mov dword [ebp - 0x108], eax
cmp ecx, 3
jbe 0x571f1e
imul edx, dword [ebp + 0x10]
nop dword [eax]
mov esi, dword [ebp + 8]
mov bl, byte [ebp - 0x101]
movzx eax, cx
add eax, edx
cmp byte [eax + esi], bl
mov ebx, dword [ebp - 0x138]
mov esi, dword [ebp - 0x11c]
ja 0x571efd
add ecx, 0xffff
cmp cx, 3
ja 0x571ed0
jmp 0x571f1e
mov edx, dword [ebp - 0x128]
movzx eax, si
inc esi
mov dword [ebp - 0x11c], esi
mov word [edx + eax*2], di
mov word [ebx + eax*2], cx
mov eax, dword [ebp - 0x108]
mov word [eax], cx
inc edi
movzx edx, di
cmp edx, dword [ebp - 0x130]
jb 0x571eb0
xor edi, edi
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x124], edi
xor eax, eax
mov dword [ebp - 0x120], edx
mov dword [ebp - 0x108], ecx
cmp ax, si
jae 0x572077
nop dword [eax]
or eax, 0xffffffff
mov dword [ebp - 0x10c], eax
lea eax, [ecx + 1]
movzx esi, ax
cmp si, word [ebp - 0x11c]
jae 0x572053
nop dword [eax]
movzx edi, si
movzx ecx, word [ebx + edi*2 - 2]
movzx eax, word [ebx + edi*2]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg 0x571fb3
mov ecx, dword [ebp - 0x128]
movzx eax, word [ecx + edi*2 - 2]
movzx ecx, word [ecx + edi*2]
sub ecx, eax
cmp ecx, 1
jg 0x571fb3
movzx eax, si
inc esi
mov dword [ebp - 0x10c], eax
cmp si, word [ebp - 0x11c]
jb 0x571f70
jmp 0x571fb9
mov eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x108]
mov edi, dword [ebp - 0x124]
cmp ax, 0xffff
je 0x57204d
cwde
lea edx, [eax - 5]
movzx eax, cx
mov dword [ebp - 0x14c], edx
cmp edx, eax
jle 0x57204d
movzx esi, cx
cmp eax, edx
jge 0x57203c
nop dword [eax + eax]
movzx ecx, word [ebx + eax*2 + 0xa]
inc esi
movzx eax, word [ebx + eax*2]
sub eax, ecx
movzx ecx, di
cdq
inc edi
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x148]
mov word [edx + ecx*2], ax
mov edx, dword [ebp - 0x120]
movzx eax, ax
add edx, eax
movzx eax, si
mov dword [ebp - 0x120], edx
cmp eax, dword [ebp - 0x14c]
jl 0x571ff0
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x124], edi
movzx ecx, ax
jmp 0x572053
mov eax, dword [ebp - 0x10c]
mov edx, dword [ebp - 0x120]
movzx ecx, ax
jmp 0x572053
mov edx, dword [ebp - 0x120]
inc ecx
mov dword [ebp - 0x108], ecx
cmp cx, word [ebp - 0x11c]
jb 0x571f50
test di, di
je 0x572077
mov eax, edx
movzx ecx, di
xor edx, edx
div ecx
mov edx, eax
mov eax, dword [ebp - 0x118]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, di
jae 0x5720e4
mov ecx, dword [ebp - 0x148]
xor esi, esi
movzx eax, di
mov dword [ebp - 0x14c], eax
mov ebx, eax
movzx eax, word [ecx]
lea ecx, [ecx + 2]
sub eax, edx
imul eax, eax
add esi, eax
sub ebx, 1
jne 0x5720a2
mov edx, dword [ebp - 0x118]
mov ebx, dword [ebp - 0x138]
mov dword [ebp + edx - 0x100], esi
test di, di
je 0x5720ea
mov eax, esi
cdq
idiv dword [ebp - 0x14c]
mov edx, dword [ebp - 0x118]
mov dword [ebp + edx - 0x100], eax
jmp 0x5720ea
mov edx, dword [ebp - 0x118]
mov ecx, dword [ebp + edx - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x110]
mov dword [ebp + edx - 0x54], eax
jle 0x572127
test ecx, ecx
jne 0x572127
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx esi, al
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x12c], esi
jmp 0x57212d
mov esi, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add edx, 4
inc al
mov dword [ebp - 0x118], edx
mov byte [ebp - 0x101], al
cmp al, 0x14
jb 0x571e90
test ecx, ecx
je 0x57217b
movzx edx, si
movzx eax, si
cmp edx, 0x14
jge 0x57217b
nop dword [eax + eax]
inc eax
cmp ax, 0x14
jb 0x572160
mov eax, 0x14
lea edi, [ebp - 0x58]
sub eax, esi
lea edi, [edi + edx*4]
movzx ecx, ax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
mov cl, al
add esp, 8
test cl, cl
jne 0x5721c3
lea ecx, [ebp - 0x54]
mov edx, 0x14
nop dword [eax]
mov eax, dword [ecx]
neg eax
mov dword [ecx], eax
add ecx, 4
sub edx, 1
jne 0x5721a0
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005712a0
add esp, 8
mov cl, al
cmp cl, 1
je 0x5721e5
cmp dword [ebp - 0x110], 1
je 0x5721e5
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0x110], edx
jmp 0x5721f1
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0x110], eax
cmp eax, 0x11
jle 0x5722c6
cmp cl, 2
jb 0x5722c6
mov edx, 1
movzx eax, cl
mov ecx, edx
mov dword [ebp - 0x10c], 0x98967f
mov dword [ebp - 0x108], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x5722b9
nop dword [eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x14c], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x10c]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x14c]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x108]
inc edx
cmp eax, ecx
mov dword [ebp - 0x108], edx
cmovge ebx, ecx
mov dword [ebp - 0x10c], ebx
cmp dx, word [ebp - 0x102]
jbe 0x572230
mov eax, dword [ebp - 0x13c]
mov eax, dword [ebp + eax*4 - 0xac]
mov edx, dword [ebp - 0x114]
cmp dword [ebp - 0x140], edx
mov ebx, dword [ebp - 0x150]
cmovg edx, dword [ebp - 0x140]
cmp dword [ebp - 0x134], ebx
mov ecx, dword [ebp - 0x110]
cmovg ebx, dword [ebp - 0x134]
mov esi, dword [ebp - 0x154]
cmp ebx, ecx
pop edi
cmovg ecx, ebx
cmp edx, eax
mov dword [esi + 0x34c], ecx
cmovg eax, edx
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.00525a3e
mov esp, ebp
pop ebp
ret