Function at 0x50f530
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff54
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0xac], ebx
mov dword [ebp - 0xa8], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x511677
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x68], eax
xor eax, eax
mov dword [ebp - 0x6c], eax
cmp word [ebx + 0x1e], 1
jne 0x50f59d
mov eax, dword [ebx + 8]
imul dword [ebp + 0x10]
mov dword [ebp - 0xa4], eax
fild dword [ebp - 0xa4]
fild dword [ebx + 0xc]
fdiv dword [0x511688]
fmulp st(1)
call fcn.00403010
mov dword [ebp - 0x3c], eax
jmp 0x50f5b3
fild dword [ebp + 0x10]
fild dword [ebx + 0xc]
fdiv dword [0x511688]
fmulp st(1)
call fcn.00403010
mov dword [ebp - 0x3c], eax
cmp dword [ebx + 0xc], 4
jne 0x50f5bf
test byte [ebp + 0x10], 1
jne 0x50f5d8
cmp dword [ebx + 0xc], 1
jne 0x50f5db
mov eax, dword [ebp + 0x10]
and eax, 0x80000007
jns 0x50f5d4
dec eax
or eax, 0xfffffff8
inc eax
test eax, eax
je 0x50f5db
inc dword [ebp - 0x3c]
xor eax, eax
mov dword [ebp - 0x48], eax
cmp word [ebx + 0x22], 7
jne 0x50f77f
cmp dword [ebx + 0x6c], 0
jne 0x50f77f
mov dl, 1
mov eax, dword [0x41c938]
call fcn.00403d80
mov dword [ebp - 0x50], eax
mov edx, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x50]
mov esi, dword [eax]
call dword [esi + 0xc]
push 0
push 0
mov eax, dword [ebp - 0x50]
call fcn.00421320
mov dl, 1
mov eax, dword [0x62b544]
call fcn.00633ab4
mov dword [ebp - 0x58], eax
push 5
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x58]
mov esi, dword [eax]
call dword [esi + 0x24]
cmp dword [ebx + 0x28], 1
je 0x50f649
cmp dword [ebx + 0x38], 1
jne 0x50f65d
mov eax, dword [ebp + 8]
mov esi, eax
lea edi, [ebp - 0xa0]
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
jmp 0x50f6a5
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x50f68e
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x20]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
xor eax, eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x78], eax
mov byte [ebp - 0x59], 0
mov eax, dword [ebx + 0x178]
mov esi, dword [eax + 0x1c]
mov edi, dword [eax + 0x20]
lea eax, [ebx + 0x178]
push eax
lea eax, [ebp - 0xa0]
push eax
push 0
mov al, byte [ebp - 0x59]
push eax
push 0
push 1
push 0
push 1
mov ecx, dword [ebp - 0x58]
xor edx, edx
mov eax, dword [ebp - 0x50]
call fcn.004f139c
mov eax, dword [ebx + 0x178]
mov edx, esi
call fcn.0061062c
mov eax, dword [ebx + 0x178]
mov edx, edi
call fcn.0061065c
mov eax, dword [ebp - 0x78]
cmp byte [eax], 0
jne 0x50f76a
cmp byte [ebp - 0x59], 0
je 0x50f743
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
call dword [edx + 8]
dec eax
test eax, eax
jl 0x50f743
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, esi
call fcn.005e8f30
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50f71e
push 0
mov eax, dword [ebp + 0x1c]
mov ecx, 3
cdq
idiv ecx
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
xor ecx, ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x58]
call fcn.00637a00
mov eax, dword [ebp - 0x58]
call fcn.00403db0
mov eax, dword [ebp - 0x50]
call fcn.00403db0
jmp 0x511637
cmp word [ebx + 0x22], 7
jne 0x50f92a
cmp dword [ebx + 0x6c], 0
je 0x50f92a
mov dl, 1
mov eax, dword [0x41c938]
call fcn.00403d80
mov dword [ebp - 0x50], eax
mov edx, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x50]
mov esi, dword [eax]
call dword [esi + 0xc]
push 0
push 0
mov eax, dword [ebp - 0x50]
call fcn.00421320
mov dl, 1
mov eax, dword [0x41c938]
call fcn.00403d80
mov dword [ebp - 0x54], eax
mov ecx, dword [ebx + 0x70]
mov edx, dword [ebx + 0x6c]
mov eax, dword [ebp - 0x54]
mov esi, dword [eax]
call dword [esi + 0xc]
push 0
push 0
mov eax, dword [ebp - 0x54]
call fcn.00421320
mov dl, 1
mov eax, dword [0x62b544]
call fcn.00633ab4
mov dword [ebp - 0x58], eax
push 5
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x58]
mov esi, dword [eax]
call dword [esi + 0x24]
cmp dword [ebx + 0x28], 1
je 0x50f811
cmp dword [ebx + 0x38], 1
jne 0x50f825
mov eax, dword [ebp + 8]
mov esi, eax
lea edi, [ebp - 0xa0]
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
jmp 0x50f86d
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x50f856
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x20]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
xor eax, eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x78], eax
mov byte [ebp - 0x59], 0
lea eax, [ebx + 0x178]
push eax
lea eax, [ebp - 0xa0]
push eax
push 0
mov al, byte [ebp - 0x59]
push eax
push 0
push 1
push 0
push 1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
call fcn.004f139c
mov eax, dword [ebp - 0x78]
cmp byte [eax], 0
jne 0x50f90d
cmp byte [ebp - 0x59], 0
je 0x50f8e6
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
call dword [edx + 8]
dec eax
test eax, eax
jl 0x50f8e6
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, esi
call fcn.005e8f30
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50f8c1
push 0
mov eax, dword [ebp + 0x1c]
mov ecx, 3
cdq
idiv ecx
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
xor ecx, ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x58]
call fcn.00637a00
mov eax, dword [ebp - 0x58]
call fcn.00403db0
mov eax, dword [ebp - 0x50]
call fcn.00403db0
mov eax, dword [ebp - 0x54]
call fcn.00403db0
jmp 0x511637
cmp word [ebx + 0x1c], 2
jne 0x50fb00
cmp dword [ebx + 8], 3
je 0x50f945
cmp dword [ebx + 8], 4
jne 0x50fb00
cmp dword [ebx + 0xc], 8
jne 0x50fb00
cmp dword [ebx + 8], 4
jne 0x50f95e
cmp dword [ebx + 0x184], 2
je 0x50f96b
cmp dword [ebx + 8], 4
jne 0x50f974
cmp word [ebx + 0x1c], 2
jne 0x50f974
cmp byte [ebx + 0x180], 0
je 0x50f978
xor eax, eax
jmp 0x50f97a
mov al, 1
mov byte [ebp - 0x49], al
cmp byte [ebp - 0x49], 0
je 0x50f98d
mov eax, dword [ebx + 0x17c]
mov byte [eax + 0x68], 0
cmp word [ebx + 0x22], 1
je 0x50f9a2
mov eax, dword [ebx + 8]
imul dword [ebp + 0x10]
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x50fae8
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x50fad1
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
cmp byte [ebp - 0x49], 0
je 0x50fa75
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x50fa93
inc edi
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x24]
mov dx, word [eax]
mov word [esi], dx
mov dl, byte [eax + 2]
mov byte [esi + 2], dl
mov edx, esi
lea eax, [esi + 2]
call fcn.005dcd5c
add dword [ebp - 0x24], 3
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
push eax
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 8]
mov eax, dword [ebx + 0x17c]
mov edx, dword [ebp - 0x10]
call fcn.0062e958
inc dword [ebp - 0x24]
add esi, 3
inc dword [ebp - 0x10]
dec edi
jne 0x50fa2f
jmp 0x50fa93
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
xor edx, edx
mov eax, dword [ebp - 0x24]
call edi
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x50fac4
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50fae8
jmp 0x50fadc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x50fae8
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50f9b9
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 2
jne 0x50fda0
cmp dword [ebx + 8], 3
je 0x50fb1b
cmp dword [ebx + 8], 4
jne 0x50fda0
cmp dword [ebx + 0xc], 0x10
jne 0x50fda0
cmp word [ebx + 0x22], 1
je 0x50fb3c
mov eax, dword [ebx + 8]
imul dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x50fd88
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x50fd71
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 8
jne 0x50fc90
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebx + 8]
add eax, eax
lea eax, [eax + eax*2]
add dword [ebp - 0x64], eax
cmp byte [ebx + 0x174], 0
je 0x50fc2c
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x50fd33
inc edi
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
mov edx, dword [ebp - 0x64]
mov word [edx], ax
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
mov edx, dword [ebp - 0x64]
mov word [edx + 2], ax
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
mov edx, dword [ebp - 0x64]
mov word [edx + 4], ax
add dword [ebp - 0x1c], 2
cmp dword [ebx + 8], 4
jne 0x50fc20
add dword [ebp - 0x1c], 2
add dword [ebp - 0x64], 6
dec edi
jne 0x50fbe4
jmp 0x50fd33
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x50fd33
inc edi
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
call fcn.0062c64c
mov edx, dword [ebp - 0x64]
mov word [edx], ax
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
call fcn.0062c64c
mov edx, dword [ebp - 0x64]
mov word [edx + 2], ax
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
call fcn.0062c64c
mov edx, dword [ebp - 0x64]
mov word [edx + 4], ax
add dword [ebp - 0x1c], 2
cmp dword [ebx + 8], 4
jne 0x50fc84
add dword [ebp - 0x1c], 2
add dword [ebp - 0x64], 6
dec edi
jne 0x50fc39
jmp 0x50fd33
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
cmp dword [ebx + 8], 4
jne 0x50fcec
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x50fcec
inc edi
mov dx, word [eax]
mov ecx, dword [ebp - 0x64]
mov word [ecx], dx
add eax, 2
mov dx, word [eax]
mov ecx, dword [ebp - 0x64]
mov word [ecx + 2], dx
add eax, 2
mov dx, word [eax]
mov ecx, dword [ebp - 0x64]
mov word [ecx + 4], dx
add eax, 2
add eax, 2
add dword [ebp - 0x64], 6
dec edi
jne 0x50fcbc
cmp byte [ebx + 0x174], 0
jne 0x50fd15
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 7
mov eax, dword [ebp - 0x1c]
call edi
jmp 0x50fd33
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 6
mov eax, dword [ebp - 0x1c]
call edi
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x50fd64
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50fd88
jmp 0x50fd7c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x50fd88
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50fb53
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 2
jne 0x50fef7
cmp dword [ebx + 8], 1
jne 0x50fef7
cmp dword [ebx + 0xc], 0x10
jne 0x50fef7
cmp word [ebx + 0x22], 1
je 0x50fdd4
mov eax, dword [ebx + 8]
imul dword [ebp + 0x10]
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x50fedf
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x50fec8
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x50fe8a
inc edi
mov eax, dword [ebp - 0x24]
movzx eax, word [eax]
shr eax, 0xa
shl eax, 3
mov byte [esi + 2], al
mov eax, dword [ebp - 0x24]
movzx eax, word [eax]
shr eax, 5
and al, 0x1f
shl eax, 3
mov byte [esi + 1], al
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
and al, 0x1f
shl eax, 3
mov byte [esi], al
add dword [ebp - 0x24], 2
add esi, 3
dec edi
jne 0x50fe54
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x50febb
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50fedf
jmp 0x50fed3
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x50fedf
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50fdeb
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 3
jne 0x51007b
cmp dword [ebx + 0xc], 1
jne 0x51007b
cmp dword [ebx + 8], 1
jne 0x51007b
mov eax, dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x51006e
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510057
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 2
jne 0x50ffd0
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510019
inc edi
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
call fcn.005e7088
test eax, eax
je 0x50ffc4
mov byte [esi], 1
jmp 0x50ffc7
mov byte [esi], 0
inc esi
inc dword [ebp - 0x14]
dec edi
jne 0x50ffb0
jmp 0x510019
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510019
inc edi
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
call fcn.005e7088
test eax, eax
je 0x510001
mov eax, dword [ebx + 0x44]
mov dx, word [eax + 3]
mov word [esi], dx
mov dl, byte [eax + 5]
mov byte [esi + 2], dl
jmp 0x510010
mov eax, dword [ebx + 0x44]
mov dx, word [eax]
mov word [esi], dx
mov dl, byte [eax + 2]
mov byte [esi + 2], dl
add esi, 3
inc dword [ebp - 0x14]
dec edi
jne 0x50ffe0
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x51004a
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x51006e
jmp 0x510062
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x51006e
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x50ff3a
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 3
jne 0x51034c
cmp dword [ebx + 0xc], 8
jg 0x51034c
cmp dword [ebx + 8], 2
jne 0x5101f7
cmp dword [ebx + 0xc], 8
jne 0x5101f7
cmp word [ebx + 0x22], 1
je 0x5100b8
mov eax, dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x5101df
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x5101c8
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x51018a
inc edi
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
lea eax, [eax + eax*2]
mov edx, dword [ebx + 0x44]
mov cx, word [edx + eax]
mov word [esi], cx
mov cl, byte [edx + eax + 2]
mov byte [esi + 2], cl
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
mov edx, 0xff
sub edx, eax
push edx
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 8]
mov eax, dword [ebx + 0x17c]
mov edx, dword [ebp - 0x14]
call fcn.0062e958
inc dword [ebp - 0x24]
add esi, 3
inc dword [ebp - 0x14]
dec edi
jne 0x51013f
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x5101bb
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5101df
jmp 0x5101d3
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x5101df
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x5100cf
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x22], 1
jne 0x510204
cmp dword [ebx + 0xc], 8
jge 0x510211
mov eax, dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x51032e
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510317
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 2
jne 0x5102ad
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x5102d9
inc edi
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi], al
inc dword [ebp - 0x24]
inc esi
dec edi
jne 0x51029d
jmp 0x5102d9
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x5102d9
inc edi
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
lea eax, [eax + eax*2]
mov edx, dword [ebx + 0x44]
mov cx, word [edx + eax]
mov word [esi], cx
mov cl, byte [edx + eax + 2]
mov byte [esi + 2], cl
inc dword [ebp - 0x24]
add esi, 3
dec edi
jne 0x5102b6
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x51030a
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x51032e
jmp 0x510322
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x51032e
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x510228
cmp word [ebx + 0x22], 1
jne 0x51033f
cmp dword [ebx + 0xc], 8
jge 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 1
ja 0x510500
cmp dword [ebx + 8], 1
jne 0x510500
cmp dword [ebx + 0xc], 8
je 0x510371
cmp dword [ebx + 0xc], 4
jne 0x510500
cmp word [ebx + 0x22], 1
jne 0x51037e
cmp dword [ebx + 0xc], 4
jne 0x51038c
mov eax, dword [ebp + 0x10]
add eax, 4
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x5104e2
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x5104cb
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x510428
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x51048d
inc edi
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi], al
inc dword [ebp - 0x24]
inc esi
dec edi
jne 0x510418
jmp 0x51048d
cmp word [ebx + 0x1c], 0
jne 0x510464
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x51048d
inc edi
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
mov edx, 0xff
sub edx, eax
mov dword [ebp - 0x14], edx
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
inc dword [ebp - 0x24]
add esi, 3
dec edi
jne 0x510438
jmp 0x51048d
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x51048d
inc edi
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi + 2], al
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi + 1], al
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi], al
inc dword [ebp - 0x24]
add esi, 3
dec edi
jne 0x51046d
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x5104be
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5104e2
jmp 0x5104d6
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x5104e2
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x5103a3
cmp word [ebx + 0x22], 1
jne 0x5104f3
cmp dword [ebx + 0xc], 4
jne 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 1
ja 0x510709
cmp dword [ebx + 8], 2
jne 0x510709
cmp dword [ebx + 0xc], 8
jne 0x510709
mov al, byte [ebx + 0x180]
xor al, 1
mov byte [ebp - 0x49], al
cmp byte [ebp - 0x49], 0
je 0x51053a
mov eax, dword [ebx + 0x17c]
mov byte [eax + 0x68], 0
cmp word [ebx + 0x22], 1
je 0x51054e
mov eax, dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x5106eb
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x5106d4
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
cmp word [ebx + 0x1c], 0
jne 0x510639
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510696
inc edi
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
mov edx, 0xff
sub edx, eax
mov dword [ebp - 0x14], edx
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
cmp byte [ebp - 0x49], 0
je 0x51062a
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
push eax
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 8]
mov eax, dword [ebx + 0x17c]
mov edx, dword [ebp - 0x10]
call fcn.0062e958
inc dword [ebp - 0x24]
jmp 0x51062e
add dword [ebp - 0x24], 2
add esi, 3
inc dword [ebp - 0x10]
dec edi
jne 0x5105e0
jmp 0x510696
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510696
inc edi
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi + 2], al
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi + 1], al
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
mov byte [esi], al
cmp byte [ebp - 0x49], 0
je 0x510689
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
push eax
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 8]
mov eax, dword [ebx + 0x17c]
mov edx, dword [ebp - 0x10]
call fcn.0062e958
inc dword [ebp - 0x24]
jmp 0x51068d
add dword [ebp - 0x24], 2
add esi, 3
inc dword [ebp - 0x10]
dec edi
jne 0x510649
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x5106c7
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5106eb
jmp 0x5106df
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x5106eb
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x510565
cmp word [ebx + 0x22], 1
jne 0x5106fc
cmp dword [ebx + 0xc], 4
jne 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 1
ja 0x5109a3
cmp dword [ebx + 8], 1
jne 0x5109a3
cmp dword [ebx + 0xc], 0x10
jne 0x5109a3
cmp word [ebx + 0x22], 1
je 0x51073c
mov eax, dword [ebp + 0x10]
add eax, eax
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x51098b
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510974
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0xa8]
push eax
mov eax, dword [ebx + 0xa4]
mov ecx, 0xf
mov edx, 1
call fcn.004050dc
mov eax, dword [ebp - 0xa8]
mov edx, 0x511694
call fcn.00404fc8
jne 0x5107ea
mov dword [ebp - 0x18], 4
jmp 0x5107f1
mov dword [ebp - 0x18], 8
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 4
jne 0x51088a
cmp word [ebx + 0x1c], 0
jne 0x51084b
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510936
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov eax, dword [ebp - 0x38]
mov dx, 0xffff
sub dx, word [eax]
mov word [esi], dx
add dword [ebp - 0x38], 2
add esi, 2
dec edi
jne 0x510815
jmp 0x510936
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510936
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
mov word [esi], ax
add dword [ebp - 0x38], 2
add esi, 2
dec edi
jne 0x510858
jmp 0x510936
cmp word [ebx + 0x1c], 0
jne 0x5108ea
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510936
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
movzx eax, word [eax]
mov edx, 0xffff
sub edx, eax
shr edx, cl
mov dword [ebp - 0x14], edx
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
add dword [ebp - 0x38], 2
add esi, 3
dec edi
jne 0x51089e
jmp 0x510936
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510936
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
movzx eax, word [eax]
shr eax, cl
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
add dword [ebp - 0x38], 2
add esi, 3
dec edi
jne 0x5108f3
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x510967
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x51098b
jmp 0x51097f
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x51098b
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x510753
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 1
ja 0x510c4e
cmp dword [ebx + 8], 2
jne 0x510c4e
cmp dword [ebx + 0xc], 0x10
jne 0x510c4e
cmp word [ebx + 0x22], 1
je 0x5109d7
mov eax, dword [ebp + 0x10]
shl eax, 2
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x510c36
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510c1f
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0xac]
push eax
mov eax, dword [ebx + 0xa4]
mov ecx, 0xf
mov edx, 1
call fcn.004050dc
mov eax, dword [ebp - 0xac]
mov edx, 0x511694
call fcn.00404fc8
jne 0x510a85
mov dword [ebp - 0x18], 4
jmp 0x510a8c
mov dword [ebp - 0x18], 8
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 4
jne 0x510b2d
cmp word [ebx + 0x1c], 0
jne 0x510aea
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510be1
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov eax, dword [ebp - 0x38]
mov dx, 0xffff
sub dx, word [eax]
mov word [esi], dx
add dword [ebp - 0x38], 2
add dword [ebp - 0x38], 2
add esi, 2
dec edi
jne 0x510ab0
jmp 0x510be1
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510be1
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
mov word [esi], ax
add dword [ebp - 0x38], 2
add dword [ebp - 0x38], 2
add esi, 2
dec edi
jne 0x510af7
jmp 0x510be1
cmp word [ebx + 0x1c], 0
jne 0x510b91
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510be1
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
movzx eax, word [eax]
mov edx, 0xffff
sub edx, eax
shr edx, cl
mov dword [ebp - 0x14], edx
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
add dword [ebp - 0x38], 2
add dword [ebp - 0x38], 2
add esi, 3
dec edi
jne 0x510b41
jmp 0x510be1
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510be1
inc edi
mov dl, byte [ebx + 0x174]
xor dl, 1
mov eax, dword [ebp - 0x38]
mov ax, word [eax]
call fcn.00643858
mov edx, dword [ebp - 0x38]
mov word [edx], ax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
movzx eax, word [eax]
shr eax, cl
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 0x14]
mov byte [esi + 2], al
mov al, byte [ebp - 0x14]
mov byte [esi + 1], al
mov al, byte [ebp - 0x14]
mov byte [esi], al
add dword [ebp - 0x38], 2
add dword [ebp - 0x38], 2
add esi, 3
dec edi
jne 0x510b9a
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x510c12
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x510c36
jmp 0x510c2a
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x510c36
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x5109ee
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 1
ja 0x510de4
cmp dword [ebx + 8], 1
jne 0x510de4
cmp dword [ebx + 0xc], 1
jne 0x510de4
mov eax, dword [ebp + 0x10]
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x3c]
call fcn.00402a80
mov dword [ebp - 0x28], eax
mov cl, 0xff
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x28]
call fcn.00408794
xor eax, eax
mov dword [ebp - 0x40], eax
cmp word [ebx + 0x1c], 0
jne 0x510caa
cmp word [ebx + 0x22], 1
je 0x510cbf
cmp word [ebx + 0x22], 5
jae 0x510cbf
cmp word [ebx + 0x1c], 1
jne 0x510cc5
cmp word [ebx + 0x22], 3
je 0x510cbf
cmp word [ebx + 0x22], 4
jne 0x510cc5
mov byte [ebp - 0x41], 1
jmp 0x510cc9
mov byte [ebp - 0x41], 0
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x510dcf
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510db8
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], esi
mov al, byte [ebp - 0x41]
sub al, 1
jb 0x510d6c
jne 0x510d7a
mov edi, dword [ebp - 0x3c]
dec edi
test edi, edi
jl 0x510d7a
inc edi
mov eax, dword [ebp - 0x24]
mov al, byte [eax]
not al
mov edx, dword [ebp - 0x2c]
mov byte [edx], al
inc dword [ebp - 0x24]
inc dword [ebp - 0x2c]
dec edi
jne 0x510d55
jmp 0x510d7a
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x2c]
call fcn.0040878c
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x510dab
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x510dcf
jmp 0x510dc3
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x510dcf
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x510ce0
mov eax, dword [ebp - 0x28]
call fcn.00402aa0
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 5
jne 0x510fb0
cmp dword [ebx + 8], 4
jne 0x510fb0
cmp dword [ebx + 0xc], 8
jne 0x510fb0
cmp word [ebx + 0x22], 1
je 0x510e18
mov eax, dword [ebp + 0x10]
shl eax, 2
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x510f98
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x510f81
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 7
jne 0x510ee6
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x1c]
mov ecx, 3
cdq
idiv ecx
shl eax, 2
add dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510f43
inc edi
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 1], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 2], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 3], dl
inc eax
add dword [ebp - 0x60], 4
dec edi
jne 0x510eb2
jmp 0x510f43
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x510f25
inc edi
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
dec edi
jne 0x510f06
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 2
mov eax, dword [ebp - 0x20]
call edi
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x510f74
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x510f98
jmp 0x510f8c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x510f98
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x510e2f
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 5
jne 0x5112a5
cmp dword [ebx + 8], 5
jl 0x5112a5
cmp dword [ebx + 0xc], 8
jne 0x5112a5
cmp dword [ebx + 8], 4
jle 0x510fe7
cmp dword [ebx + 0x184], 0
jle 0x510fe7
cmp byte [ebx + 0x180], 0
je 0x510feb
xor eax, eax
jmp 0x510fed
mov al, 1
mov byte [ebp - 0x49], al
cmp byte [ebp - 0x49], 0
je 0x511000
mov eax, dword [ebx + 0x17c]
mov byte [eax + 0x68], 0
cmp word [ebx + 0x22], 1
je 0x511015
mov eax, dword [ebx + 8]
imul dword [ebp + 0x10]
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x51128d
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x511276
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 7
jne 0x511156
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x1c]
mov ecx, 3
cdq
idiv ecx
shl eax, 2
add dword [ebp - 0x60], eax
cmp byte [ebp - 0x49], 0
je 0x5110c5
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x17c]
call fcn.00630638
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x1c]
add dword [ebp - 0x34], eax
jmp 0x5110ca
xor eax, eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x511238
inc edi
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 1], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 2], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 3], dl
inc eax
cmp byte [ebp - 0x49], 0
je 0x511132
mov dl, byte [eax]
mov ecx, dword [ebp - 0x34]
mov byte [ecx], dl
inc dword [ebp - 0x34]
inc eax
mov edx, dword [ebx + 8]
sub edx, 4
sub edx, 2
jl 0x51114a
inc edx
mov dword [ebp - 0x18], 2
inc eax
inc dword [ebp - 0x18]
dec edx
jne 0x511129
jmp 0x51114a
mov edx, dword [ebx + 8]
sub edx, 4
test edx, edx
jle 0x51114a
mov dword [ebp - 0x18], 1
inc eax
inc dword [ebp - 0x18]
dec edx
jne 0x511143
add dword [ebp - 0x60], 4
dec edi
jne 0x5110da
jmp 0x511238
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
cmp byte [ebp - 0x49], 0
je 0x51118c
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x17c]
call fcn.00630638
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x1c]
add dword [ebp - 0x34], eax
jmp 0x511191
xor eax, eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x60], edx
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x51121a
inc edi
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 1], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 2], dl
inc eax
mov dl, 0xff
sub dl, byte [eax]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + 3], dl
inc eax
cmp byte [ebp - 0x49], 0
je 0x5111fb
mov dl, byte [eax]
mov ecx, dword [ebp - 0x34]
mov byte [ecx], dl
inc dword [ebp - 0x34]
inc eax
mov edx, dword [ebx + 8]
sub edx, 4
sub edx, 2
jl 0x511213
inc edx
mov dword [ebp - 0x18], 2
inc eax
inc dword [ebp - 0x18]
dec edx
jne 0x5111f2
jmp 0x511213
mov edx, dword [ebx + 8]
sub edx, 4
test edx, edx
jle 0x511213
mov dword [ebp - 0x18], 1
inc eax
inc dword [ebp - 0x18]
dec edx
jne 0x51120c
add dword [ebp - 0x60], 4
dec edi
jne 0x5111a3
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 2
mov eax, dword [ebp - 0x20]
call edi
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x511269
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x51128d
jmp 0x511281
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x51128d
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x51102c
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 5
jne 0x511514
cmp dword [ebx + 8], 4
jne 0x511514
cmp dword [ebx + 0xc], 0x10
jne 0x511514
cmp word [ebx + 0x22], 1
je 0x5112d9
mov eax, dword [ebp + 0x10]
shl eax, 3
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x5114fc
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x5114e5
cmp byte [ebx + 0x174], 0
jne 0x51133e
mov edx, dword [ebp + 0x10]
shl edx, 2
mov eax, dword [ebp - 0x20]
call fcn.0050f4fc
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 7
jne 0x5113fa
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
jns 0x511377
add eax, 3
sar eax, 2
shl eax, 2
add dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x5114a7
inc edi
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax]
shr eax, 8
mov dl, 0xff
sub dl, al
mov eax, dword [ebp - 0x60]
mov byte [eax], dl
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax]
shr eax, 8
mov dl, 0xff
sub dl, al
mov eax, dword [ebp - 0x60]
mov byte [eax + 1], dl
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax]
shr eax, 8
mov dl, 0xff
sub dl, al
mov eax, dword [ebp - 0x60]
mov byte [eax + 2], dl
add dword [ebp - 0x1c], 2
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax]
shr eax, 8
mov dl, 0xff
sub dl, al
mov eax, dword [ebp - 0x60]
mov byte [eax + 3], dl
add dword [ebp - 0x1c], 2
add dword [ebp - 0x60], 4
dec edi
jne 0x511393
jmp 0x5114a7
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0x10]
shl eax, 2
call fcn.00402a80
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp + 0x10]
dec edi
test edi, edi
jl 0x511481
inc edi
mov edx, dword [ebp - 0x1c]
movzx edx, word [edx]
shr edx, 8
mov cl, 0xff
sub cl, dl
mov byte [eax], cl
inc eax
add dword [ebp - 0x1c], 2
mov edx, dword [ebp - 0x1c]
movzx edx, word [edx]
shr edx, 8
mov cl, 0xff
sub cl, dl
mov byte [eax], cl
inc eax
add dword [ebp - 0x1c], 2
mov edx, dword [ebp - 0x1c]
movzx edx, word [edx]
shr edx, 8
mov cl, 0xff
sub cl, dl
mov byte [eax], cl
inc eax
add dword [ebp - 0x1c], 2
mov edx, dword [ebp - 0x1c]
movzx edx, word [edx]
shr edx, 8
mov cl, 0xff
sub cl, dl
mov byte [eax], cl
inc eax
add dword [ebp - 0x1c], 2
dec edi
jne 0x51142e
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 2
mov eax, dword [ebp - 0x30]
call edi
mov eax, dword [ebp - 0x30]
call fcn.00402aa0
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x5114d8
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5114fc
jmp 0x5114f0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x5114fc
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x5112f0
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
jmp 0x511637
cmp word [ebx + 0x1c], 8
jne 0x511637
cmp dword [ebx + 8], 3
jne 0x511637
cmp dword [ebx + 0xc], 8
jne 0x511637
cmp word [ebx + 0x22], 1
je 0x511548
mov eax, dword [ebp + 0x10]
lea eax, [eax + eax*2]
call fcn.00402a80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
dec eax
test eax, eax
jl 0x511628
inc eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 0x14]
push eax
push ebx
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x3c]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x18]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0050ed08
test al, al
je 0x511611
push 0
mov eax, ebx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x20]
call fcn.0050f148
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp + 0x1c]
add esi, eax
push 1
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebx + 0x178]
push eax
mov edi, dword [0x83f794]
mov edi, dword [edi]
mov ecx, esi
mov dl, 4
mov eax, dword [ebp - 0x20]
call edi
mov eax, dword [ebp + 8]
inc dword [eax + 0xc]
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0
je 0x511604
mov eax, dword [ebp + 8]
fild dword [eax + 0xc]
mov eax, dword [ebp + 8]
fmul qword [eax + 0x18]
call fcn.00403010
mov ecx, eax
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov eax, dword [esi + 4]
call dword [esi]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x511628
jmp 0x51161c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x511628
inc dword [ebp - 0xc]
dec dword [ebp - 0x70]
jne 0x51155f
cmp word [ebx + 0x22], 1
je 0x511637
mov eax, dword [ebp - 0x20]
call fcn.00402aa0
cmp word [ebx + 0x22], 5
jne 0x51164b
lea ecx, [ebp - 0x48]
xor edx, edx
xor eax, eax
call dword [ebx + 0x170]
cmp dword [ebp - 0x68], 0
je 0x511659
mov eax, dword [ebp - 0x68]
call fcn.00402aa0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51167e
lea eax, [ebp - 0xac]
mov edx, 2
call fcn.00404be0
ret