Function at 0x40ff20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xfc
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
mov cl, byte [eax + 8]
mov esi, 1
mov edx, 1
shl edx, cl
mov cl, byte [eax + 4]
shl esi, cl
mov dword [ebp - 0xc0], esi
mov ecx, dword [eax + 0x5c]
mov dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x60]
mov dword [ebp - 0x14], ecx
mov ecx, dword [eax + 0x58]
mov dword [ebp - 0x98], ecx
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0x80]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x70]
mov dword [ebp - 0x94], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x78]
mov dword [ebp - 0xcc], ecx
mov ecx, dword [eax + 0x7c]
mov dword [ebp - 0xec], ecx
mov ecx, dword [eax]
mov dword [ebp - 0xc4], ecx
mov ebx, dword [eax + 0x84]
mov ecx, dword [eax + 0x68]
mov dword [ebp - 0xb4], ecx
mov ecx, dword [eax + 0x6c]
mov dword [ebp - 0x9c], ecx
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x90], ecx
mov ecx, dword [eax + 0xc]
mov esi, dword [eax + 0x64]
xor eax, eax
mov dword [edi], 0
mov edi, dword [ebp + 0x20]
mov dword [edi], 0
cmp ebx, 0xffffffff
je 0x411e6b
mov dword [ebp - 0x18], esi
neg edx
test ecx, ecx
mov dword [ebp - 0x8c], ecx
mov ecx, edx
jne 0x41000a
lea eax, [ebp - 0x10]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp + 8]
mov al, byte [eax + 0x88]
mov byte [ebp - 0x10], al
mov dword [ebp - 0x8c], 1
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
lea edx, [eax + 0x18]
mov dword [ebp - 0xa0], edx
not ecx
mov dword [ebp - 0xb8], ecx
dec dword [ebp - 0xc0]
cmp ebx, 0xfffffffe
jne 0x4100fa
test esi, esi
setne al
cmp dword [ebp - 0x98], 0x40
setl cl
xor cl, al
jne 0x4101d0
test esi, esi
je 0x4101d0
mov ebx, edi
neg esi
mov eax, dword [ebp - 0x98]
lea ecx, [eax - 0x40]
cmp ecx, esi
mov edi, esi
jb 0x410067
mov edi, ecx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0xa0], edx
mov eax, esi
sub eax, edi
mov edx, edi
mov edi, 0x758c95b8
sub edi, edx
cmp esi, ecx
mov edx, esi
mov esi, dword [ebp + 0x14]
ja 0x410088
mov edx, ecx
neg eax
mov dword [ebp - 0xbc], eax
lea eax, [edi + ebx - 0x758c95b8]
mov dword [ebp - 0xc8], eax
neg edx
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x98]
lea ecx, [eax + ecx + 0x18]
mov edi, eax
nop
nop
mov dword [ebp - 0x14], edx
mov dl, byte [ebx]
mov byte [ecx], dl
xor edx, edx
sub edx, dword [esi]
mov eax, esi
mov esi, 1
sub esi, edx
mov edx, dword [ebp - 0x14]
mov dword [eax], esi
mov esi, eax
inc ebx
inc edi
inc ecx
dec edx
jne 0x4100b0
mov ebx, dword [ebp - 0x98]
add ebx, 0xd0431b05
sub ebx, dword [ebp - 0x18]
add ebx, 0x2fbce4fb
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0xa0]
mov esi, dword [ebp - 0x8c]
jmp 0x4101eb
test ebx, ebx
setne al
mov ecx, dword [ebp + 0x1c]
mov esi, ecx
test esi, esi
mov edi, ebx
setne cl
xor cl, al
mov eax, esi
jne 0x410450
test edi, edi
mov ecx, edi
je 0x410472
mov dword [ebp - 0xa0], edx
mov edx, ecx
mov dword [ebp - 0xdc], ecx
neg edx
neg eax
cmp edx, eax
ja 0x410137
mov edx, eax
mov dword [ebp - 0x34], edx
mov eax, edx
neg eax
mov dword [ebp - 0x20], eax
xor esi, esi
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp - 0x18]
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], edx
lea esi, [edx - 0x501611cb]
sub esi, dword [ebp - 0x94]
lea edx, [esi + 0x501611cb]
mov ebx, dword [ebp - 0x8c]
cmp edx, ebx
mov edx, 0
jb 0x410179
mov edx, ebx
lea edx, [edx + esi + 0x501611cb]
mov esi, dword [ebp - 0x90]
mov dl, byte [esi + edx]
mov edi, dword [ebp - 0x18]
mov byte [esi + edi], dl
mov esi, edi
mov byte [ecx], dl
inc esi
cmp esi, ebx
mov ebx, 0
je 0x41019f
mov ebx, esi
mov esi, dword [ebp - 0x1c]
inc esi
inc ecx
dec eax
mov edx, ebx
jne 0x410150
mov ecx, dword [ebp - 0x34]
neg ecx
sub ecx, dword [ebp - 0xdc]
neg ecx
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp - 0xa0]
mov dword [ebp - 0x1c], esi
jmp 0x41048d
mov dword [ebp - 0xbc], esi
mov dword [ebp - 0xc8], edi
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x8c]
mov ebx, dword [ebp - 0x98]
cmp ebx, 4
jg 0x410202
mov dword [eax + 0x58], ebx
cmp dword [ebp + 0x24], 0
setne al
movzx eax, al
jmp 0x411e6b
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0xa0], edx
mov ecx, dword [eax + 4]
mov eax, dword [ebp - 0xc4]
neg eax
sub ecx, eax
mov eax, 0x300
shl eax, cl
cmp eax, 0xfffff8ca
je 0x41033c
xor ecx, ecx
cmp eax, 0xfffff8ca
je 0x410317
lea esi, [eax + 0x736]
mov edx, esi
xor edx, 0xf
xor ecx, ecx
and edx, esi
mov dword [ebp - 0x14], edx
je 0x410302
mov esi, 0xffffffff
mov edx, dword [ebp - 0x28]
nop
nop
nop
nop
nop
nop
mov edi, esi
and edi, 0x1177520a
mov ebx, ecx
and ebx, 0x6e88adf5
add ebx, edi
mov edi, esi
not edi
xor ebx, 0x11775202
and edi, 8
or edi, ebx
mov word [edx + ecx*2 + 0xe], 0x400
mov word [edx + ecx*2 + 0xc], 0x400
mov word [edx + ecx*2 + 0xa], 0x400
mov word [edx + ecx*2 + 8], 0x400
mov word [edx + ecx*2 + 6], 0x400
mov word [edx + ecx*2 + 4], 0x400
mov word [edx + ecx*2 + 2], 0x400
mov word [edx + ecx*2], 0x400
mov word [edx + edi*2 + 0xe], 0x400
mov word [edx + edi*2 + 0xc], 0x400
mov word [edx + edi*2 + 0xa], 0x400
mov word [edx + edi*2 + 8], 0x400
mov word [edx + edi*2 + 6], 0x400
mov word [edx + edi*2 + 4], 0x400
mov word [edx + edi*2 + 2], 0x400
mov word [edx + edi*2], 0x400
mov edi, dword [ebp - 0x14]
add ecx, 0x10
add esi, 0xfffffff0
cmp edi, ecx
jne 0x410260
mov ecx, edi
mov edx, eax
neg edx
mov esi, 0x736
sub esi, edx
cmp esi, ecx
mov esi, dword [ebp - 0x8c]
je 0x41033c
add eax, 0x736
sub eax, ecx
mov edx, dword [ebp - 0x28]
lea edx, [edx + ecx*2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], 0x400
inc ecx
add edx, 2
dec eax
jne 0x410330
mov dword [ebp - 0xec], 1
mov eax, 1
sub eax, esi
mov ecx, dword [ebp - 0x90]
sub ecx, eax
mov byte [ecx], 0
mov edi, dword [ebp + 8]
movzx eax, byte [edi + 0x18]
shl eax, 8
movzx ecx, byte [edi + 0x19]
mov edx, ecx
not edx
mov ebx, esi
mov esi, eax
not esi
and edx, 0x343f
and ecx, 0xc0
and esi, 0x343f
and eax, 0xcb00
add ecx, edx
add eax, esi
xor eax, ecx
shl eax, 8
movzx esi, byte [edi + 0x1a]
add esi, eax
shl esi, 8
movzx eax, byte [edi + 0x1b]
mov ecx, eax
not ecx
mov edx, esi
not edx
and ecx, 0xb00a6a
and eax, 0x95
and edx, 0xb00a6a
and esi, 0x4ff500
add eax, ecx
add esi, edx
xor esi, eax
shl esi, 8
movzx eax, byte [edi + 0x1c]
mov ecx, eax
not ecx
mov edx, esi
not edx
and ecx, 0x8e1997e1
and eax, 0x1e
and edx, 0x8e1997e1
and esi, 0x71e66800
add eax, ecx
add esi, edx
xor esi, eax
mov dword [ebp - 0x14], esi
lea eax, [edi + 0x1d]
mov edi, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0xcc], 1
mov dword [ebp - 0x30], 1
mov dword [ebp - 0x94], 1
xor ebx, ebx
xor ecx, ecx
mov dword [ebp - 0x20], 0
mov esi, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0xc8]
jmp 0x410496
mov dword [ebp - 0x20], 0
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp + 0xc]
mov esi, edx
mov dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov ecx, edi
jmp 0x410490
mov dword [ebp - 0x20], 0
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp + 0xc]
mov esi, edx
mov dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x8c]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xc8], eax
mov dword [ebp - 0x8c], edi
test ebx, ebx
mov eax, edi
je 0x4104b4
mov eax, dword [ebp - 0x34]
mov ecx, 1
sub ecx, eax
mov eax, dword [ebp - 0x90]
sub eax, ecx
mov dword [ebp - 0x18], eax
mov ebx, 8
lea ecx, [edx + 0x664]
mov dword [ebp - 0xfc], ecx
lea ecx, [edx + 0xa68]
mov dword [ebp - 0xf8], ecx
mov edi, esi
mov eax, 0xffffffc0
lea ecx, [esi - 0x40]
mov dword [ebp - 0xe4], ecx
lea ecx, [esi - 1]
mov dword [ebp - 0xd4], ecx
lea ecx, [esi + 0x17]
mov dword [ebp - 0xf0], ecx
mov ecx, dword [ebp + 8]
lea ecx, [esi + ecx + 0x18]
mov dword [ebp - 0xe8], ecx
mov ecx, dword [ebp - 0x18]
mov cl, byte [ecx]
mov dword [ebp - 0x18], ecx
sub ebx, dword [ebp - 0xc4]
mov dword [ebp - 0xd0], ebx
neg edi
mov dword [ebp - 0xf4], edi
sub eax, edi
mov dword [ebp - 0xe0], eax
not dword [ebp - 0xb8]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x34]
jmp 0x410568
mov eax, dword [ebp - 0x44]
sub dword [ebp - 0xdc], eax
mov esi, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xcc]
mov dword [ebp - 0xa8], ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0xcc], ecx
mov dword [ebp - 0x34], edx
mov ecx, ebx
mov dword [ebp - 0x14], eax
jmp 0x4105ac
lea edi, [ecx + ecx + 9]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp - 0x34]
mov byte [ecx + edx], al
mov dword [ebp - 0x18], eax
inc edx
mov dword [ebp - 0x34], edx
mov ecx, esi
mov esi, dword [ebp - 0xa0]
mov dword [ebp - 0xa4], ecx
mov edx, edi
lea eax, [esi + 0x2b0a558d]
sub eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x98]
lea edi, [eax + ecx - 0x2b0a558d]
cmp edi, 0x17
jg 0x4106a0
mov dword [ebp - 0x38], edx
mov ebx, ecx
mov eax, 1
test edi, edi
js 0x411e6b
mov dword [ebp - 0xb0], edi
jle 0x410934
mov eax, ebx
neg eax
sub eax, dword [ebp - 0xd4]
mov edx, 0xa7baaa76
sub edx, eax
sub edx, dword [ebp - 0x1c]
xor eax, eax
cmp edx, 0xa7baaa75
je 0x4108fd
mov eax, dword [ebp - 0xa0]
lea edx, [eax + ebx + 0x536aad7]
mov edi, dword [ebp - 0x1c]
sub edx, edi
add edx, 0xfac95529
mov dword [ebp - 0xd8], edx
not edx
or edx, 0x1f
xor eax, eax
cmp edx, 0xffffffff
mov ecx, dword [ebp + 8]
je 0x4108ec
mov eax, dword [ebp - 0xd8]
and eax, 0xffffffe0
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x98]
sub eax, edi
mov edx, dword [ebp - 0xd4]
lea edx, [edx + eax]
add edx, edi
mov esi, dword [ebp - 0xa0]
cmp esi, edx
setbe bl
add eax, dword [ebp - 0xf0]
add eax, ecx
cmp edi, eax
setbe bh
xor eax, eax
xor bh, bl
jne 0x4106ae
cmp esi, edx
mov esi, ecx
mov ecx, 0xffffffff
jbe 0x4108ec
jmp 0x4106c0
mov ebx, dword [ebp + 0x1c]
mov edi, dword [ebp - 0xa8]
jmp 0x410a68
mov esi, ecx
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x20], ecx
mov dl, byte [edi + eax]
mov byte [ebp - 0x2c], dl
mov dl, byte [edi + eax + 1]
mov byte [ebp - 0x30], dl
mov dl, byte [edi + eax + 2]
mov byte [ebp - 0x3c], dl
mov dl, byte [edi + eax + 3]
mov byte [ebp - 0x40], dl
mov dl, byte [edi + eax + 4]
mov byte [ebp - 0x44], dl
mov dl, byte [edi + eax + 5]
mov byte [ebp - 0x48], dl
mov dl, byte [edi + eax + 6]
mov byte [ebp - 0x4c], dl
mov dl, byte [edi + eax + 7]
mov byte [ebp - 0x4d], dl
mov dword [ebp - 0x54], ecx
mov ebx, edi
mov edi, eax
mov dword [ebp - 0x5c], ecx
mov edx, eax
mov cl, byte [ebx + eax + 8]
mov byte [ebp - 0x6e], cl
mov cl, byte [ebx + eax + 9]
mov byte [ebp - 0x70], cl
mov cl, byte [ebx + eax + 0xa]
mov byte [ebp - 0x72], cl
mov cl, byte [ebx + eax + 0xb]
mov byte [ebp - 0x74], cl
mov cl, byte [ebx + eax + 0xc]
mov byte [ebp - 0x76], cl
mov cl, byte [ebx + eax + 0xd]
mov byte [ebp - 0x7c], cl
mov cl, byte [ebx + eax + 0xe]
mov byte [ebp - 0x84], cl
mov ecx, dword [ebp - 0x54]
and ecx, 0xc00b952a
and edi, 0x3ff46ad5
add edi, ecx
mov ecx, dword [ebp - 0x20]
not ecx
xor edi, 0xc00b953a
and ecx, 0x10
mov dword [ebp - 0x6c], ecx
or edi, ecx
mov cl, byte [ebx + edi]
mov byte [ebp - 0x54], cl
mov cl, byte [ebx + edi + 1]
mov byte [ebp - 0x55], cl
mov cl, byte [ebx + edi + 2]
mov byte [ebp - 0x5d], cl
mov cl, byte [ebx + edi + 3]
mov byte [ebp - 0x5e], cl
mov cl, byte [ebx + edi + 4]
mov byte [ebp - 0x64], cl
mov cl, byte [ebx + edi + 5]
mov byte [ebp - 0x65], cl
mov cl, byte [ebx + edi + 6]
mov byte [ebp - 0x66], cl
mov cl, byte [ebx + edi + 7]
mov byte [ebp - 0x67], cl
mov cl, byte [ebx + edi + 8]
mov byte [ebp - 0x6d], cl
mov cl, byte [ebx + edi + 9]
mov byte [ebp - 0x6f], cl
mov cl, byte [ebx + edi + 0xa]
mov byte [ebp - 0x71], cl
mov cl, byte [ebx + edi + 0xb]
mov byte [ebp - 0x73], cl
mov cl, byte [ebx + edi + 0xc]
mov byte [ebp - 0x75], cl
mov cl, byte [ebx + edi + 0xd]
mov byte [ebp - 0x77], cl
mov cl, byte [ebx + edi + 0xe]
mov byte [ebp - 0x80], cl
mov cl, byte [ebx + edi + 0xf]
mov byte [ebp - 0x85], cl
mov edi, ebx
mov bl, byte [edi + eax + 0xf]
mov byte [esi + eax + 0x27], bl
mov cl, byte [ebp - 0x84]
mov byte [esi + eax + 0x26], cl
mov cl, byte [ebp - 0x7c]
mov byte [esi + eax + 0x25], cl
mov cl, byte [ebp - 0x76]
mov byte [esi + eax + 0x24], cl
mov cl, byte [ebp - 0x74]
mov byte [esi + eax + 0x23], cl
mov cl, byte [ebp - 0x72]
mov byte [esi + eax + 0x22], cl
mov cl, byte [ebp - 0x70]
mov byte [esi + eax + 0x21], cl
mov cl, byte [ebp - 0x6e]
mov byte [esi + eax + 0x20], cl
mov bl, byte [ebp - 0x4d]
mov byte [esi + eax + 0x1f], bl
mov bl, byte [ebp - 0x4c]
mov byte [esi + eax + 0x1e], bl
mov bl, byte [ebp - 0x48]
mov byte [esi + eax + 0x1d], bl
mov bl, byte [ebp - 0x44]
mov byte [esi + eax + 0x1c], bl
mov bl, byte [ebp - 0x40]
mov byte [esi + eax + 0x1b], bl
mov bl, byte [ebp - 0x3c]
mov byte [esi + eax + 0x1a], bl
mov bl, byte [ebp - 0x30]
mov byte [esi + eax + 0x19], bl
mov bl, byte [ebp - 0x2c]
mov byte [esi + eax + 0x18], bl
mov ecx, dword [ebp - 0x5c]
and ecx, 0x4f40e132
and edx, 0xb0bf1ecd
add edx, ecx
xor edx, 0x4f40e122
or edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x20]
mov bl, byte [ebp - 0x85]
mov byte [esi + edx + 0x27], bl
mov bl, byte [ebp - 0x80]
mov byte [esi + edx + 0x26], bl
mov bl, byte [ebp - 0x77]
mov byte [esi + edx + 0x25], bl
mov bl, byte [ebp - 0x75]
mov byte [esi + edx + 0x24], bl
mov bl, byte [ebp - 0x73]
mov byte [esi + edx + 0x23], bl
mov bl, byte [ebp - 0x71]
mov byte [esi + edx + 0x22], bl
mov bl, byte [ebp - 0x6f]
mov byte [esi + edx + 0x21], bl
mov bl, byte [ebp - 0x6d]
mov byte [esi + edx + 0x20], bl
mov bl, byte [ebp - 0x67]
mov byte [esi + edx + 0x1f], bl
mov bl, byte [ebp - 0x66]
mov byte [esi + edx + 0x1e], bl
mov bl, byte [ebp - 0x65]
mov byte [esi + edx + 0x1d], bl
mov bl, byte [ebp - 0x64]
mov byte [esi + edx + 0x1c], bl
mov bl, byte [ebp - 0x5e]
mov byte [esi + edx + 0x1b], bl
mov bl, byte [ebp - 0x5d]
mov byte [esi + edx + 0x1a], bl
mov bl, byte [ebp - 0x55]
mov byte [esi + edx + 0x19], bl
mov bl, byte [ebp - 0x54]
mov byte [esi + edx + 0x18], bl
mov edx, dword [ebp - 0xac]
add eax, 0x20
add ecx, 0xffffffe0
cmp edx, eax
jne 0x4106c0
mov eax, edx
mov dword [ebp - 0x1c], edi
cmp dword [ebp - 0xd8], eax
mov ebx, dword [ebp - 0x98]
je 0x410934
mov ecx, dword [ebp - 0xa0]
lea edx, [ecx + ebx]
sub edx, eax
mov edi, dword [ebp - 0x1c]
sub edx, edi
lea esi, [ecx + eax]
lea edi, [edi + eax]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov cl, byte [edi]
mov byte [esi], cl
neg eax
mov ecx, 1
sub ecx, eax
inc esi
inc edi
dec edx
mov eax, ecx
jne 0x410920
mov edx, dword [ebp - 0xbc]
test edx, edx
setne al
mov esi, dword [ebp - 0xb0]
cmp esi, 0x40
setl cl
xor cl, al
jne 0x410a20
test edx, edx
je 0x410a20
mov eax, edx
neg eax
mov ecx, ebx
neg ecx
mov edx, dword [ebp - 0xe0]
sub edx, ecx
sub edx, dword [ebp - 0x1c]
cmp edx, eax
mov ecx, eax
mov esi, dword [ebp + 0x14]
jb 0x410979
mov ecx, edx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0xa0]
lea edi, [ecx + ebx + 0x75f0f33f]
mov ebx, dword [ebp - 0x1c]
sub edi, ebx
mov ecx, dword [ebp - 0xe4]
mov edx, dword [ebp - 0x98]
lea edx, [ecx + edx]
sub edx, ebx
cmp eax, edx
mov ecx, dword [ebp - 0x98]
ja 0x4109ab
mov eax, edx
add edi, 0x8a0f0cc1
mov dword [ebp - 0x2c], edi
sub ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc8]
mov edi, edx
sub edi, dword [ebp - 0x20]
mov dword [ebp - 0x1c], edi
neg eax
add ecx, dword [ebp - 0xe8]
mov edi, dword [ebp - 0xb0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov bl, byte [edx]
inc edx
inc edi
mov byte [ecx], bl
inc dword [esi]
inc ecx
dec eax
jne 0x4109e0
mov eax, dword [ebp - 0x20]
add dword [ebp - 0xbc], eax
mov ecx, dword [ebp - 0x2c]
sub ecx, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc8], eax
mov esi, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xa8]
mov ebx, dword [ebp + 0x1c]
jmp 0x410a31
mov ecx, esi
mov esi, dword [ebp - 0xa0]
mov ebx, dword [ebp + 0x1c]
mov edi, dword [ebp - 0xa8]
cmp dword [ebp + 0x24], 0
setne al
cmp ecx, 0x17
mov edx, ecx
setg cl
test al, cl
jne 0x410a60
xor cl, al
mov dword [ebp - 0x1c], esi
mov ecx, edx
mov edx, dword [ebp - 0x38]
jne 0x410a68
jmp 0x411aa3
mov dword [ebp - 0x1c], esi
mov ecx, edx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x98], ecx
mov ecx, dword [ebp - 0x34]
cmp ecx, ebx
jae 0x411a86
mov dword [ebp - 0xa8], edi
mov eax, dword [ebp - 0xb4]
lea edi, [ecx + eax]
mov esi, edi
not esi
mov eax, dword [ebp - 0xb8]
or esi, eax
not esi
mov eax, edx
shl eax, 4
lea ecx, [eax + esi]
mov ebx, dword [ebp - 0x24]
cmp ebx, 0xffffff
ja 0x410ad0
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], edx
shl ebx, 8
mov eax, dword [ebp - 0x14]
shl eax, 8
mov edx, dword [ebp - 0x1c]
mov edi, ecx
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x1c], edx
add eax, ecx
mov ecx, edi
jmp 0x410adc
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x24], ebx
mov edx, ebx
shr edx, 0xb
mov edi, dword [ebp - 0x28]
mov ebx, ecx
movzx ecx, word [edi + ebx*2]
imul edx, ecx
cmp eax, edx
jae 0x410cf0
mov dword [ebp - 0x14], eax
mov eax, edi
mov esi, 0x800
sub esi, ecx
shr esi, 5
neg ecx
sub esi, ecx
mov word [eax + ebx*2], si
mov eax, dword [ebp - 0xc0]
mov ecx, dword [ebp - 0x20]
xor eax, ecx
not eax
and eax, ecx
mov ecx, dword [ebp - 0xc4]
shl eax, cl
mov ecx, dword [ebp - 0x18]
movzx esi, cl
mov ecx, dword [ebp - 0xd0]
shr esi, cl
neg esi
sub esi, eax
neg esi
imul esi, esi, 0x300
mov eax, esi
neg eax
mov ecx, 0x736
sub ecx, eax
mov dword [ebp - 0x2c], ecx
mov ecx, 1
cmp dword [ebp - 0x38], 7
jl 0x410df0
mov dword [ebp - 0x30], esi
mov eax, dword [ebp - 0xa4]
lea eax, [eax + 0x5f87ec03]
sub eax, dword [ebp - 0x94]
lea esi, [eax - 0x5f87ec03]
xor ecx, ecx
mov edi, dword [ebp - 0x8c]
cmp esi, edi
mov esi, edi
jb 0x410b88
mov ecx, esi
lea eax, [ecx + eax - 0x5f87ec03]
mov ecx, dword [ebp - 0x90]
movzx edi, byte [ecx + eax]
mov eax, dword [ebp - 0x30]
add eax, 0x836
mov dword [ebp - 0x30], eax
mov ecx, 1
mov esi, dword [ebp - 0x28]
nop
nop
nop
nop
add edi, edi
mov dword [ebp - 0x24], edi
and edi, 0x100
mov dword [ebp - 0x20], edi
lea eax, [eax + ecx]
lea edi, [edi + eax - 0x1f7e580a]
cmp edx, 0xffffff
ja 0x410bf0
mov dword [ebp - 0x18], ecx
shl edx, 8
mov ebx, dword [ebp - 0x14]
shl ebx, 8
mov eax, dword [ebp - 0x1c]
movzx ecx, byte [eax]
inc eax
mov dword [ebp - 0x1c], eax
add ebx, ecx
mov ecx, edx
jmp 0x410bf8
mov dword [ebp - 0x18], ecx
mov ecx, edx
mov ebx, dword [ebp - 0x14]
mov edx, ecx
shr edx, 0xb
mov eax, esi
movzx esi, word [eax + edi*2 + 0x3efcb014]
imul edx, esi
cmp ebx, edx
jae 0x410c60
mov dword [ebp - 0x14], ebx
mov ecx, 0x800
sub ecx, esi
shr ecx, 5
add ecx, esi
mov word [eax + edi*2 + 0x3efcb014], cx
mov ecx, dword [ebp - 0x18]
add ecx, ecx
mov edi, dword [ebp - 0x20]
test edi, edi
mov ebx, eax
sete al
cmp ecx, 0x100
mov esi, ecx
setl cl
xor cl, al
mov eax, ebx
jne 0x410f16
test edi, edi
mov ecx, esi
mov esi, eax
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x24]
je 0x410bb0
jmp 0x410f20
mov eax, esi
shr eax, 5
add esi, 0x37e4
sub esi, eax
add esi, 0xffffc81c
mov eax, dword [ebp - 0x28]
mov word [eax + edi*2 + 0x3efcb014], si
sub ecx, edx
add ebx, 0x9cbefd53
sub ebx, edx
mov edx, dword [ebp - 0x18]
add edx, edx
mov eax, edx
not eax
and eax, 0x938c83c3
and edx, 0x6c737c3c
add edx, eax
add ebx, 0x634102ad
mov dword [ebp - 0x14], ebx
xor edx, 0x938c83c2
cmp dword [ebp - 0x20], 0
sete al
cmp edx, 0xff
mov edi, edx
setg dl
or dl, al
movzx eax, dl
cmp eax, 1
mov esi, dword [ebp - 0x28]
je 0x410f1c
mov al, 1
test al, al
mov edx, ecx
mov ecx, edi
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x24]
jne 0x410bb0
jmp 0x410f20
mov dword [ebp - 0x18], esi
mov esi, ecx
shr esi, 5
add ecx, 0xffffc394
sub ecx, esi
add ecx, 0x3c6c
mov word [edi + ebx*2], cx
mov esi, dword [ebp - 0x24]
add esi, 0x19f870d3
sub esi, edx
add esi, 0xe6078f2d
add eax, 0x967504e5
sub eax, edx
mov edi, eax
add edi, 0x698afb1b
mov ecx, dword [ebp - 0x38]
lea eax, [ecx + 0xc0]
cmp esi, 0xffffff
mov ebx, esi
ja 0x410d51
shl ebx, 8
shl edi, 8
mov edx, dword [ebp - 0x1c]
mov esi, eax
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x1c], edx
add edi, ecx
mov dword [ebp - 0x20], eax
mov ecx, ebx
shr ebx, 0xb
mov esi, dword [ebp - 0x28]
movzx eax, word [esi + eax*2]
imul ebx, eax
mov edx, edi
sub edx, ebx
mov dword [ebp - 0x14], edx
jb 0x41109e
add ecx, 0x72ade090
sub ecx, ebx
add ecx, 0x8d521f70
mov edx, eax
shr edx, 5
add eax, 0xfffff559
sub eax, edx
add eax, 0xaa7
mov edx, dword [ebp - 0x20]
mov word [esi + edx*2], ax
mov eax, dword [ebp - 0x38]
lea edx, [eax + 0xcc]
cmp ecx, 0xffffff
mov ebx, esi
ja 0x410e00
shl ecx, 8
mov edi, dword [ebp - 0x14]
shl edi, 8
mov ebx, ecx
mov ecx, dword [ebp - 0x1c]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, eax
not ecx
mov esi, edi
not esi
and ecx, 0x56512cf8
and eax, 7
and esi, 0x56512cf8
and edi, 0xa9aed300
add eax, ecx
mov ecx, ebx
add edi, esi
mov ebx, dword [ebp - 0x28]
xor edi, eax
jmp 0x410e03
mov esi, dword [ebp - 0x28]
jmp 0x410f30
mov edi, dword [ebp - 0x14]
mov esi, ecx
shr esi, 0xb
movzx eax, word [ebx + edx*2]
imul esi, eax
cmp edi, esi
jae 0x411102
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
neg eax
sub eax, ecx
neg eax
mov word [ebx + edx*2], ax
mov eax, 0xffffff10
sub eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
sub ecx, eax
mov eax, ecx
cmp esi, 0xffffff
ja 0x410e7b
shl esi, 8
shl edi, 8
mov ecx, dword [ebp - 0x1c]
mov ebx, eax
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, eax
not ecx
mov edx, edi
not edx
and ecx, 0x21b34933
and eax, 0xcc
and edx, 0x21b34933
and edi, 0xde4cb600
add eax, ecx
add edi, edx
xor edi, eax
mov eax, ebx
mov dword [ebp - 0x14], edi
mov ecx, esi
shr ecx, 0xb
mov ebx, eax
mov edx, dword [ebp - 0x28]
movzx eax, word [edx + ebx*2]
imul ecx, eax
mov dword [ebp - 0x24], ecx
cmp edi, ecx
jae 0x4111a5
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
add ecx, eax
mov word [edx + ebx*2], cx
mov eax, 1
mov ecx, dword [ebp - 0x9c]
test ecx, ecx
mov edx, ecx
je 0x411e6b
mov ebx, dword [ebp - 0x8c]
cmp edx, ebx
adc edx, 0
mov dword [ebp - 0x9c], edx
cmp dword [ebp - 0x38], 6
setg cl
mov edi, dword [ebp - 0xa4]
mov edx, edi
sub edx, dword [ebp - 0x94]
cmp edx, ebx
mov esi, 0
jb 0x410ef0
mov esi, ebx
movzx ecx, cl
add esi, edx
mov edx, dword [ebp - 0x90]
mov al, byte [edx + esi]
mov byte [edx + edi], al
inc edi
cmp edi, ebx
mov esi, 0
je 0x410590
mov esi, edi
jmp 0x410590
mov ecx, esi
mov esi, eax
jmp 0x410f20
mov edx, ecx
mov ecx, edi
cmp ecx, 0xff
mov edi, edx
jg 0x411020
nop
nop
mov edi, dword [ebp - 0x2c]
lea eax, [edi + ecx]
mov dword [ebp - 0x20], eax
cmp edx, 0xffffff
ja 0x410f90
mov dword [ebp - 0x18], ecx
shl edx, 8
mov eax, dword [ebp - 0x14]
shl eax, 8
mov edi, dword [ebp - 0x1c]
movzx ecx, byte [edi]
inc edi
mov dword [ebp - 0x1c], edi
mov ebx, esi
mov esi, ecx
not esi
mov edi, eax
not edi
and esi, 0x69921ee2
and ecx, 0x1d
and edi, 0x69921ee2
and eax, 0x966de100
add ecx, esi
mov esi, ebx
add eax, edi
xor eax, ecx
mov ecx, eax
jmp 0x410f96
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x14], ecx
mov edi, edx
shr edi, 0xb
mov ebx, esi
mov eax, dword [ebp - 0x20]
movzx esi, word [ebx + eax*2]
imul edi, esi
sub ecx, edi
jae 0x410fd0
mov ecx, 0x800
sub ecx, esi
shr ecx, 5
neg esi
sub ecx, esi
mov word [ebx + eax*2], cx
mov ecx, dword [ebp - 0x18]
add ecx, ecx
jmp 0x411010
mov dword [ebp - 0x24], edi
mov edi, esi
shr edi, 5
sub esi, edi
mov word [ebx + eax*2], si
add edx, 0x5757ad27
sub edx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x18]
add esi, esi
mov eax, esi
not eax
and eax, 0x30c1fede
and esi, 0xcf3e0120
add esi, eax
add edx, 0xa8a852d9
xor esi, 0x30c1fedf
mov dword [ebp - 0x14], ecx
mov ecx, esi
mov edi, edx
mov esi, ebx
cmp ecx, 0x100
mov edx, edi
jl 0x410f30
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], edi
mov eax, dword [ebp + 0x18]
mov edi, dword [ebp - 0x34]
mov byte [eax + edi], cl
mov edx, ecx
mov ecx, dword [ebp - 0x9c]
mov eax, ecx
neg eax
mov esi, dword [ebp - 0x8c]
cmp ecx, esi
mov ecx, eax
sbb ecx, 0
mov eax, dword [ebp - 0x90]
mov ebx, dword [ebp - 0xa4]
mov byte [eax + ebx], dl
inc ebx
cmp ebx, esi
mov eax, 0
je 0x411063
mov eax, ebx
inc edi
mov dword [ebp - 0x34], edi
neg ecx
mov dword [ebp - 0x9c], ecx
mov edx, dword [ebp - 0x38]
cmp edx, 4
mov ecx, eax
mov esi, dword [ebp - 0xa0]
mov edi, 0
jl 0x4105ac
cmp edx, 9
jg 0x411092
add edx, 0xfffffffd
jmp 0x411095
add edx, 0xfffffffa
mov edi, edx
mov ecx, eax
jmp 0x4105ac
mov dword [ebp - 0x14], edi
mov edx, 0x800
sub edx, eax
shr edx, 5
add edx, eax
mov eax, dword [ebp - 0x20]
mov word [esi + eax*2], dx
cmp dword [ebp - 0x38], 6
setg al
movzx eax, al
mov dword [ebp - 0x24], 0x334
mov dword [ebp - 0x40], 0x3b4
mov dword [ebp - 0x3c], 0x434
mov dword [ebp - 0x38], 0x333
mov ecx, dword [ebp - 0x94]
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0xfc]
mov dword [ebp - 0x20], edx
lea edx, [eax + eax*2]
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0xec], eax
mov esi, ebx
jmp 0x411309
mov ebx, ecx
mov ecx, eax
shr ecx, 5
sub eax, ecx
mov ecx, dword [ebp - 0x28]
mov word [ecx + edx*2], ax
add ebx, 0xe4cbf8cd
sub ebx, esi
add ebx, 0x1b340733
add edi, 0x96818c12
sub edi, esi
mov eax, edi
add eax, 0x697e73ee
mov ecx, dword [ebp - 0x38]
lea ecx, [ecx - 0x1d4b94d6]
cmp ebx, 0xffffff
ja 0x411156
shl ebx, 8
shl eax, 8
mov edx, dword [ebp - 0x1c]
mov esi, ecx
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x1c], edx
add eax, ecx
mov ecx, esi
mov dword [ebp - 0x20], ecx
mov esi, ebx
shr esi, 0xb
mov edi, dword [ebp - 0x28]
movzx ecx, word [edi + ecx*2 + 0x3a972b5c]
imul esi, ecx
cmp eax, esi
jae 0x4111fc
mov dword [ebp - 0x14], eax
mov edx, 0x800
sub edx, ecx
shr edx, 5
add edx, ecx
mov eax, dword [ebp - 0x20]
mov word [edi + eax*2 + 0x3a972b5c], dx
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0xcc], ecx
jmp 0x4112cb
mov ecx, eax
shr ecx, 5
add eax, 0xfffff728
sub eax, ecx
add eax, 0x8d8
mov word [edx + ebx*2], ax
mov ecx, dword [ebp - 0x14]
add ecx, 0xb12529c
mov eax, dword [ebp - 0x24]
sub ecx, eax
add esi, 0xa2149218
sub esi, eax
add ecx, 0xf4edad64
add esi, 0x5deb6de8
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0xcc]
mov edi, dword [ebp - 0xa8]
mov dword [ebp - 0xcc], edi
mov dword [ebp - 0x14], ecx
jmp 0x4112d1
mov edx, ecx
shr edx, 5
add ecx, 0xffff8ab0
sub ecx, edx
add ecx, 0x7550
mov edx, dword [ebp - 0x20]
mov word [edi + edx*2 + 0x3a972b5c], cx
add ebx, 0xfb741a8
sub ebx, esi
add ebx, 0xf048be58
add eax, 0xf10f9990
sub eax, esi
add eax, 0xef06670
mov ecx, dword [ebp - 0x38]
lea edx, [ecx + 0xe4]
cmp ebx, 0xffffff
ja 0x41125b
shl ebx, 8
shl eax, 8
mov esi, edx
mov edx, dword [ebp - 0x1c]
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x1c], edx
mov edx, esi
add eax, ecx
mov esi, ebx
shr esi, 0xb
movzx ecx, word [edi + edx*2]
imul esi, ecx
mov edi, eax
sub edi, esi
jae 0x41128d
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x14], eax
mov edx, 0x800
sub edx, ecx
shr edx, 5
add edx, ecx
mov ecx, dword [ebp - 0xec]
mov edi, dword [ebp - 0xa8]
jmp 0x4112b9
mov dword [ebp - 0x20], edx
sub ebx, esi
mov edx, ecx
shr edx, 5
add ecx, 0xffff856a
sub ecx, edx
add ecx, 0x7a96
mov dx, cx
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x14], edi
mov esi, ebx
mov edi, dword [ebp - 0xec]
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x20]
mov word [eax + ebx*2], dx
mov eax, edi
mov dword [ebp - 0xec], ecx
mov edx, dword [ebp - 0x94]
cmp dword [ebp - 0x38], 6
setg cl
movzx edi, cl
mov dword [ebp - 0x24], 0x536
mov dword [ebp - 0x40], 0x5b6
mov dword [ebp - 0x3c], 0x636
mov dword [ebp - 0x38], 0x535
mov ecx, dword [ebp - 0xf8]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x30], edx
lea edx, [edi + edi*2 + 8]
mov ecx, eax
cmp esi, 0xffffff
ja 0x411352
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x94], ecx
shl esi, 8
mov edx, dword [ebp - 0x14]
shl edx, 8
mov ecx, dword [ebp - 0x1c]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov edi, eax
not edi
mov ecx, edx
not ecx
and edi, 0xeec134a7
and eax, 0x58
and ecx, 0xeec134a7
and edx, 0x113ecb00
add eax, edi
add edx, ecx
xor edx, eax
jmp 0x41135e
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x94], ecx
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x20]
mov ecx, esi
shr ecx, 0xb
movzx eax, word [ebx]
imul ecx, eax
cmp edx, ecx
jae 0x4113ab
mov dword [ebp - 0x14], edx
mov edx, ecx
mov ecx, 0x800
sub ecx, eax
neg eax
shr ecx, 5
sub ecx, eax
mov word [ebx], cx
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x24]
lea eax, [ecx + eax*8]
mov ecx, dword [ebp - 0x28]
lea edi, [ecx + eax*2]
mov ecx, edx
mov dword [ebp - 0xdc], 0
mov eax, 3
jmp 0x4114a1
add esi, 0xdeb501f6
sub esi, ecx
add esi, 0x214afe0a
add edx, 0x1163ecb7
sub edx, ecx
add edx, 0xee9c1349
mov ecx, eax
shr ecx, 5
add eax, 0xffff8397
sub eax, ecx
add eax, 0x7c69
mov word [ebx], ax
cmp esi, 0xffffff
ja 0x411418
shl esi, 8
shl edx, 8
mov ecx, dword [ebp - 0x1c]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, eax
not ecx
mov edi, edx
not edi
and ecx, 0x9c14a371
and eax, 0x8e
and edi, 0x9c14a371
and edx, 0x63eb5c00
add eax, ecx
add edx, edi
xor edx, eax
mov edi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0x14], edx
mov ecx, esi
shr ecx, 0xb
movzx eax, word [edi + ebx*2]
imul ecx, eax
sub edx, ecx
jae 0x411464
mov edx, ecx
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
neg eax
sub ecx, eax
mov word [edi + ebx*2], cx
mov ecx, edx
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x40]
lea eax, [edx + eax*8]
lea edi, [edi + eax*2]
mov dword [ebp - 0xdc], 8
mov eax, 3
jmp 0x4114a1
add esi, 0x673fc7bb
sub esi, ecx
mov ecx, eax
shr ecx, 5
add eax, 0x1c64
sub eax, ecx
add esi, 0x98c03845
add eax, 0xffffe39c
mov word [edi + ebx*2], ax
mov eax, dword [ebp - 0x3c]
lea edi, [edi + eax*2]
mov dword [ebp - 0xdc], 0x10
mov eax, 8
mov dword [ebp - 0x14], edx
mov ecx, esi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x24], eax
mov ebx, 1
mov dword [ebp - 0x20], eax
mov edx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp ecx, 0xffffff
ja 0x4114e0
shl ecx, 8
mov eax, dword [ebp - 0x14]
shl eax, 8
mov edi, dword [ebp - 0x1c]
movzx esi, byte [edi]
inc edi
mov dword [ebp - 0x1c], edi
add eax, esi
jmp 0x4114e3
mov eax, dword [ebp - 0x14]
mov edi, ecx
shr edi, 0xb
movzx edx, word [edx + ebx*2]
imul edi, edx
cmp eax, edi
jae 0x411520
mov dword [ebp - 0x14], eax
mov esi, 0x800
sub esi, edx
neg edx
shr esi, 5
sub esi, edx
mov eax, dword [ebp - 0x18]
mov word [eax + ebx*2], si
add ebx, ebx
mov ecx, edi
jmp 0x411565
add ecx, 0xc4fcdfb5
sub ecx, edi
add ecx, 0x3b03204b
add eax, 0x6955967b
sub eax, edi
add eax, 0x96aa6985
mov dword [ebp - 0x14], eax
mov esi, edx
shr esi, 5
sub edx, esi
mov eax, dword [ebp - 0x18]
mov word [eax + ebx*2], dx
add ebx, ebx
mov esi, ebx
not esi
and esi, 0x514f7fe3
and ebx, 0xaeb0801c
add ebx, esi
xor ebx, 0x514f7fe2
mov edx, eax
dec dword [ebp - 0x20]
mov esi, dword [ebp - 0x28]
jne 0x4114c0
mov edi, ecx
mov edx, 1
mov ecx, dword [ebp - 0x24]
shl edx, cl
mov dword [ebp - 0x44], edx
lea eax, [ebx - 0x6b49d79e]
sub eax, edx
mov ecx, dword [ebp - 0xdc]
lea eax, [eax + ecx + 0x6b49d79e]
cmp dword [ebp - 0x2c], 3
ja 0x4116e8
mov dword [ebp - 0x48], ebx
cmp eax, 3
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x24], 0x270
mov ebx, dword [ebp - 0x14]
mov ecx, edi
jg 0x4115c6
mov eax, dword [ebp - 0x40]
shl eax, 6
add eax, 0x1b0
mov dword [ebp - 0x24], eax
mov eax, 6
mov edx, 1
mov edi, 0xfffffffa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
mov eax, esi
mov esi, dword [ebp - 0x24]
neg esi
sub edx, esi
cmp ecx, 0xffffff
ja 0x41160c
shl ecx, 8
shl ebx, 8
mov edi, dword [ebp - 0x1c]
movzx esi, byte [edi]
inc edi
mov dword [ebp - 0x1c], edi
add ebx, esi
mov edi, ecx
mov esi, eax
shr ecx, 0xb
movzx eax, word [esi + edx*2]
imul ecx, eax
cmp ebx, ecx
jae 0x411640
mov edi, 0x800
sub edi, eax
shr edi, 5
add edi, eax
mov word [esi + edx*2], di
mov edx, dword [ebp - 0x14]
add edx, edx
jmp 0x411688
mov esi, eax
shr esi, 5
sub eax, esi
mov esi, dword [ebp - 0x28]
mov word [esi + edx*2], ax
add edi, 0xab87fda9
sub edi, ecx
add ebx, 0xcc026b1e
sub ebx, ecx
mov edx, dword [ebp - 0x14]
add edx, edx
mov eax, edx
not eax
and eax, 0xabb21a62
and edx, 0x544de59c
add edx, eax
add edi, 0x54780257
add ebx, 0x33fd94e2
xor edx, 0xabb21a63
mov ecx, edi
mov eax, dword [ebp - 0x18]
dec eax
mov edi, dword [ebp - 0x20]
inc edi
jne 0x4115e0
lea eax, [edx - 0x40]
cmp eax, 4
jl 0x411702
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x24], ecx
mov esi, ebx
mov ecx, eax
sar ecx, 1
mov edi, eax
or edi, 0x75047c32
and edi, 0x75047c33
xor edi, 0x75047c30
cmp eax, 0xd
jg 0x411713
dec ecx
mov dword [ebp - 0x38], ecx
shl edi, cl
mov ecx, dword [ebp - 0x24]
mov edx, 0x2ef
sub edx, dword [ebp - 0x14]
mov eax, edi
neg eax
sub edx, eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x94], edi
jmp 0x411799
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x48], ebx
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x94]
mov ebx, dword [ebp - 0x14]
jmp 0x41190c
mov dword [ebp - 0x94], eax
mov edx, dword [ebp - 0x9c]
jmp 0x4118ee
mov edx, 5
sub edx, ecx
add ecx, 0xfffffffb
nop
nop
nop
mov dword [ebp - 0x14], edi
mov ebx, dword [ebp - 0x24]
cmp ebx, 0xffffff
ja 0x411744
shl ebx, 8
shl esi, 8
mov eax, dword [ebp - 0x1c]
movzx edi, byte [eax]
mov dword [ebp - 0x18], edi
inc eax
mov dword [ebp - 0x1c], eax
add esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x14]
shr ebx, 1
add edi, edi
cmp esi, ebx
jae 0x411760
mov dword [ebp - 0x24], ebx
jmp 0x41177b
add esi, 0xb60720c4
sub esi, ebx
mov dword [ebp - 0x24], ebx
add esi, 0x49f8df3c
mov eax, edi
and eax, 1
xor edi, 1
or edi, eax
dec ecx
inc edx
jne 0x411720
shl edi, 4
mov dword [ebp - 0x38], 4
mov dword [ebp - 0x3c], 0x322
mov dword [ebp - 0x94], edi
mov ecx, dword [ebp - 0x24]
mov eax, 1
mov edi, ecx
mov dword [ebp - 0x14], 1
mov ebx, esi
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x18], eax
mov ecx, ebx
mov esi, dword [ebp - 0x3c]
neg esi
mov eax, dword [ebp - 0x14]
sub eax, esi
mov dword [ebp - 0x20], eax
cmp edi, 0xffffff
mov eax, edi
ja 0x411810
shl eax, 8
mov edi, ecx
shl edi, 8
mov edx, dword [ebp - 0x1c]
movzx esi, byte [edx]
inc edx
mov dword [ebp - 0x1c], edx
mov ecx, esi
not ecx
mov edx, edi
not edx
and ecx, 0xb184325e
and esi, 0xa1
and edx, 0xb184325e
and edi, 0x4e7bcd00
add esi, ecx
add edi, edx
xor edi, esi
mov edx, dword [ebp - 0x28]
jmp 0x411815
mov edx, dword [ebp - 0x28]
mov edi, ecx
mov ecx, eax
shr ecx, 0xb
mov ebx, edx
mov edx, dword [ebp - 0x20]
movzx esi, word [ebx + edx*2]
imul ecx, esi
cmp edi, ecx
jae 0x411860
mov eax, 0x800
sub eax, esi
shr eax, 5
add eax, esi
mov word [ebx + edx*2], ax
mov eax, dword [ebp - 0x14]
add eax, eax
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x9c]
mov ebx, edi
mov eax, dword [ebp - 0x18]
jmp 0x4118e1
add eax, 0xd1ff9b7f
sub eax, ecx
mov dword [ebp - 0x24], eax
add edi, 0x7566ad43
sub edi, ecx
mov ecx, edx
mov edx, esi
shr edx, 5
sub esi, edx
mov word [ebx + ecx*2], si
mov eax, dword [ebp - 0x18]
mov edx, eax
not edx
mov esi, edx
and esi, 0xaea5e7bb
mov ecx, eax
and ecx, 0x515a1844
add ecx, esi
mov ebx, dword [ebp - 0x94]
mov esi, ebx
not esi
or edx, esi
and esi, 0xaea5e7bb
and ebx, 0x515a1844
add ebx, esi
xor ebx, ecx
not edx
or ebx, edx
mov dword [ebp - 0x94], ebx
mov edx, dword [ebp - 0x24]
add edx, 0x2e006481
add edi, 0x8a9952bd
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx + ecx + 1]
mov dword [ebp - 0x14], ecx
mov ecx, edx
mov edx, dword [ebp - 0x9c]
mov ebx, edi
add eax, eax
dec dword [ebp - 0x38]
mov edi, ecx
jne 0x4117b0
mov edi, ecx
mov eax, dword [ebp - 0x2c]
neg eax
mov ecx, 7
sub ecx, eax
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x94]
inc ecx
je 0x411e76
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x94], ecx
mov eax, 1
cmp ecx, edx
mov esi, dword [ebp - 0x40]
ja 0x411e6b
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 0x44]
lea eax, [eax - 0x6939591b]
sub eax, dword [ebp - 0xdc]
add eax, 0xda59326b
sub eax, dword [ebp - 0x48]
add eax, 0x8ee026ae
mov ebx, dword [ebp - 0x34]
mov ecx, ebx
neg ecx
mov edx, 1
sub edx, ecx
mov edi, dword [ebp + 0x1c]
cmp edx, edi
mov ecx, edi
jb 0x41195d
mov ecx, edx
mov edx, dword [ebp - 0x44]
lea edx, [edx - 2]
mov dword [ebp - 0x18], edx
mov edx, ebx
sub ebx, ecx
lea ecx, [edx + 1]
mov dword [ebp - 0x38], ecx
cmp eax, ebx
ja 0x411976
mov eax, ebx
mov edx, dword [ebp - 0x34]
lea edx, [edx + 0x2f3a6bcb]
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0xdc]
mov ebx, edx
and ebx, 2
mov ecx, dword [ebp - 0x18]
sub ecx, edx
xor edx, 2
or edx, ebx
mov dword [ebp - 0xdc], edx
mov edx, dword [ebp - 0x48]
sub ecx, edx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x38]
cmp edi, ecx
mov ebx, edi
ja 0x4119b0
mov ebx, ecx
add esi, 2
add dword [ebp - 0xdc], edx
mov edi, dword [ebp - 0x34]
sub edi, ebx
mov ecx, dword [ebp - 0x9c]
neg ecx
mov edx, dword [ebp - 0x20]
sub edx, eax
mov ebx, dword [ebp - 0x18]
cmp ebx, edi
ja 0x4119d4
mov ebx, edi
mov edi, dword [ebp - 0x8c]
sub edi, dword [ebp - 0x9c]
mov dword [ebp - 0x38], edi
mov edi, esi
mov dword [ebp - 0x40], esi
sub edi, ecx
mov dword [ebp - 0x9c], edi
add edx, 0xd0c59435
mov dword [ebp - 0x20], edx
add dword [ebp - 0xdc], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x34]
lea esi, [eax + ecx]
neg ebx
mov dword [ebp - 0x18], ebx
mov ecx, dword [ebp - 0xa4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
sub ecx, dword [ebp - 0x94]
mov ebx, dword [ebp - 0x8c]
cmp ecx, ebx
mov edi, 0
jb 0x411a39
mov edi, ebx
add edi, ecx
mov ecx, dword [ebp - 0x90]
mov al, byte [ecx + edi]
mov byte [ecx + edx], al
mov edi, eax
mov ecx, edx
inc ecx
cmp ecx, ebx
mov ebx, 0
je 0x411a57
mov ebx, ecx
inc dword [ebp - 0x34]
mov edx, edi
mov byte [esi], dl
inc esi
dec dword [ebp - 0x18]
mov ecx, ebx
jne 0x411a20
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x40]
ja 0x410550
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x9c], eax
jmp 0x410550
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0xcc], edi
mov dword [ebp - 0x2c], edx
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
jmp 0x411ac3
mov dword [ebp - 0x98], ecx
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0xcc], edi
mov dword [ebp - 0x2c], edx
mov ecx, esi
mov ebx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x24]
cmp edi, 0xffffff
ja 0x411ad7
shl edi, 8
shl ebx, 8
movzx eax, byte [ecx]
inc ecx
add ebx, eax
mov dword [ebp - 0x24], edi
mov edi, esi
mov edx, esi
sub edi, ecx
add edi, dword [ebp - 0x98]
mov eax, 1
js 0x411e6b
mov dword [ebp - 0x14], ebx
test edi, edi
mov dword [ebp - 0x80], edi
mov edi, ecx
mov ecx, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0x98]
jle 0x411dea
sub ecx, ebx
mov eax, 0x431a4f5b
sub eax, ecx
sub eax, edi
xor esi, esi
cmp eax, 0x431a4f5b
je 0x411dcb
mov dword [ebp - 0xa0], edx
mov edx, edi
neg edx
mov eax, edx
sub eax, ecx
mov ebx, eax
xor ebx, 0x1f
xor esi, esi
and ebx, eax
mov dword [ebp - 0x7c], ebx
je 0x411dab
mov dword [ebp - 0x84], eax
neg ecx
mov ebx, ecx
mov ecx, 0xffffffe9
sub ecx, ebx
sub edx, ecx
mov ecx, ebx
mov ebx, dword [ebp - 0x14]
neg ecx
not ecx
add edx, dword [ebp + 8]
mov eax, dword [ebp - 0xa0]
cmp ecx, eax
sbb cl, cl
cmp edx, edi
mov edx, eax
sbb al, al
or al, cl
and al, 1
movzx eax, al
cmp eax, 1
je 0x411b8a
mov al, 1
test al, al
jne 0x411dba
xor esi, esi
mov eax, 0xffffffff
mov edx, dword [ebp + 8]
mov ebx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x18], eax
mov cl, byte [ebx + esi]
mov byte [ebp - 0x1c], cl
mov cl, byte [ebx + esi + 1]
mov byte [ebp - 0x20], cl
mov cl, byte [ebx + esi + 2]
mov byte [ebp - 0x28], cl
mov cl, byte [ebx + esi + 3]
mov byte [ebp - 0x38], cl
mov cl, byte [ebx + esi + 4]
mov byte [ebp - 0x3c], cl
mov cl, byte [ebx + esi + 5]
mov byte [ebp - 0x40], cl
mov cl, byte [ebx + esi + 6]
mov byte [ebp - 0x44], cl
mov cl, byte [ebx + esi + 7]
mov byte [ebp - 0x48], cl
mov dword [ebp - 0x4c], esi
mov edi, esi
mov dword [ebp - 0x64], eax
mov eax, esi
mov cl, byte [ebx + esi + 8]
mov byte [ebp - 0x70], cl
mov cl, byte [ebx + esi + 9]
mov byte [ebp - 0x71], cl
mov cl, byte [ebx + esi + 0xa]
mov byte [ebp - 0x73], cl
mov cl, byte [ebx + esi + 0xb]
mov byte [ebp - 0x74], cl
mov cl, byte [ebx + esi + 0xc]
mov byte [ebp - 0x75], cl
mov cl, byte [ebx + esi + 0xd]
mov byte [ebp - 0x76], cl
mov cl, byte [ebx + esi + 0xe]
mov byte [ebp - 0x77], cl
mov ecx, dword [ebp - 0x4c]
and ecx, 0x10
xor edi, 0x10
or edi, ecx
mov cl, byte [ebx + edi]
mov byte [ebp - 0x4c], cl
mov cl, byte [ebx + edi + 1]
mov byte [ebp - 0x4d], cl
mov cl, byte [ebx + edi + 2]
mov byte [ebp - 0x54], cl
mov cl, byte [ebx + edi + 3]
mov byte [ebp - 0x55], cl
mov cl, byte [ebx + edi + 4]
mov byte [ebp - 0x5c], cl
mov cl, byte [ebx + edi + 5]
mov byte [ebp - 0x5d], cl
mov cl, byte [ebx + edi + 6]
mov byte [ebp - 0x5e], cl
mov cl, byte [ebx + edi + 7]
mov byte [ebp - 0x65], cl
mov cl, byte [ebx + edi + 8]
mov byte [ebp - 0x66], cl
mov cl, byte [ebx + edi + 9]
mov byte [ebp - 0x67], cl
mov cl, byte [ebx + edi + 0xa]
mov byte [ebp - 0x6c], cl
mov cl, byte [ebx + edi + 0xb]
mov byte [ebp - 0x6d], cl
mov cl, byte [ebx + edi + 0xc]
mov byte [ebp - 0x6e], cl
mov cl, byte [ebx + edi + 0xd]
mov byte [ebp - 0x6f], cl
mov cl, byte [ebx + edi + 0xe]
mov byte [ebp - 0x72], cl
mov cl, byte [ebx + edi + 0xf]
mov ch, byte [ebx + esi + 0xf]
mov byte [edx + esi + 0x27], ch
mov ch, byte [ebp - 0x77]
mov byte [edx + esi + 0x26], ch
mov ch, byte [ebp - 0x76]
mov byte [edx + esi + 0x25], ch
mov ch, byte [ebp - 0x75]
mov byte [edx + esi + 0x24], ch
mov ch, byte [ebp - 0x74]
mov byte [edx + esi + 0x23], ch
mov ch, byte [ebp - 0x73]
mov byte [edx + esi + 0x22], ch
mov ch, byte [ebp - 0x71]
mov byte [edx + esi + 0x21], ch
mov ch, byte [ebp - 0x70]
mov byte [edx + esi + 0x20], ch
mov ch, byte [ebp - 0x48]
mov byte [edx + esi + 0x1f], ch
mov ch, byte [ebp - 0x44]
mov byte [edx + esi + 0x1e], ch
mov ch, byte [ebp - 0x40]
mov byte [edx + esi + 0x1d], ch
mov ch, byte [ebp - 0x3c]
mov byte [edx + esi + 0x1c], ch
mov ch, byte [ebp - 0x38]
mov byte [edx + esi + 0x1b], ch
mov ch, byte [ebp - 0x28]
mov byte [edx + esi + 0x1a], ch
mov ch, byte [ebp - 0x20]
mov byte [edx + esi + 0x19], ch
mov ch, byte [ebp - 0x1c]
mov byte [edx + esi + 0x18], ch
mov edi, dword [ebp - 0x64]
and edi, 0x464beed1
and eax, 0xb9b4112e
add eax, edi
mov edi, dword [ebp - 0x18]
not edi
xor eax, 0x464beec1
and edi, 0x10
or edi, eax
mov eax, dword [ebp - 0x18]
mov byte [edx + edi + 0x27], cl
mov cl, byte [ebp - 0x72]
mov byte [edx + edi + 0x26], cl
mov cl, byte [ebp - 0x6f]
mov byte [edx + edi + 0x25], cl
mov cl, byte [ebp - 0x6e]
mov byte [edx + edi + 0x24], cl
mov cl, byte [ebp - 0x6d]
mov byte [edx + edi + 0x23], cl
mov cl, byte [ebp - 0x6c]
mov byte [edx + edi + 0x22], cl
mov cl, byte [ebp - 0x67]
mov byte [edx + edi + 0x21], cl
mov cl, byte [ebp - 0x66]
mov byte [edx + edi + 0x20], cl
mov cl, byte [ebp - 0x65]
mov byte [edx + edi + 0x1f], cl
mov cl, byte [ebp - 0x5e]
mov byte [edx + edi + 0x1e], cl
mov cl, byte [ebp - 0x5d]
mov byte [edx + edi + 0x1d], cl
mov cl, byte [ebp - 0x5c]
mov byte [edx + edi + 0x1c], cl
mov cl, byte [ebp - 0x55]
mov byte [edx + edi + 0x1b], cl
mov cl, byte [ebp - 0x54]
mov byte [edx + edi + 0x1a], cl
mov cl, byte [ebp - 0x4d]
mov byte [edx + edi + 0x19], cl
mov cl, byte [ebp - 0x4c]
mov byte [edx + edi + 0x18], cl
add esi, 0x20
add eax, 0xffffffe0
cmp dword [ebp - 0x7c], esi
jne 0x411ba0
mov edi, ebx
mov esi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0xa0]
mov ebx, dword [ebp - 0x14]
jmp 0x411dba
mov dword [ebp - 0x84], eax
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 0xa0]
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x84], esi
mov ebx, dword [ebp - 0x98]
je 0x411dea
add ebx, edx
sub ebx, esi
sub ebx, edi
mov eax, dword [ebp + 8]
lea eax, [esi + eax + 0x18]
add edi, esi
nop
nop
nop
nop
nop
nop
mov cl, byte [edi]
mov byte [eax], cl
inc esi
inc eax
inc edi
dec ebx
jne 0x411de0
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [ebp - 0x80]
mov dword [ecx + 0x58], eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 0x5c], eax
mov eax, dword [ebp - 0x14]
mov dword [ecx + 0x60], eax
mov eax, dword [ebp - 0xa4]
mov dword [ecx + 0x64], eax
mov eax, dword [ebp - 0xb4]
neg eax
mov edx, dword [ebp - 0x34]
sub eax, edx
neg eax
mov dword [ecx + 0x68], eax
mov eax, dword [ebp - 0x9c]
mov dword [ecx + 0x6c], eax
mov eax, dword [ebp - 0x94]
mov dword [ecx + 0x70], eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 0x74], eax
mov eax, dword [ebp - 0xcc]
mov dword [ecx + 0x78], eax
mov eax, dword [ebp - 0xec]
mov dword [ecx + 0x7c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 0x80], eax
mov eax, dword [ebp - 0xdc]
mov dword [ecx + 0x84], eax
mov al, byte [ebp - 0x10]
mov byte [ecx + 0x88], al
mov eax, dword [ebp + 0x20]
mov dword [eax], edx
xor eax, eax
add esp, 0xfc
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0xdc], 0xffffffff
mov dword [ebp - 0x94], 0
mov esi, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x1c]
jmp 0x411ac3