Function at 0x40f1e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xec
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
mov cl, byte [eax + 8]
mov esi, 1
mov edx, 1
shl edx, cl
mov dword [ebp - 0xa4], edx
mov cl, byte [eax + 4]
shl esi, cl
mov ecx, eax
mov eax, dword [ecx + 0x5c]
mov dword [ebp - 0x24], eax
mov eax, dword [ecx + 0x60]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x58]
mov dword [ebp - 0x94], eax
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 0x80]
mov dword [ebp - 0x38], eax
mov eax, dword [ecx + 0x70]
mov dword [ebp - 0x90], eax
mov eax, dword [ecx + 0x74]
mov dword [ebp - 0xd8], eax
mov eax, dword [ecx + 0x78]
mov dword [ebp - 0xdc], eax
mov eax, dword [ecx + 0x7c]
mov dword [ebp - 0xe0], eax
mov eax, dword [ecx]
mov dword [ebp - 0xb8], eax
mov edi, dword [ecx + 0x84]
mov dword [ebp - 0xa8], edi
mov eax, dword [ecx + 0x68]
mov dword [ebp - 0xac], eax
mov eax, dword [ecx + 0x6c]
mov dword [ebp - 0x88], eax
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x8c], eax
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x64]
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebx], 0
mov ebx, dword [ebp + 0x20]
mov dword [ebx], 0
cmp edi, 0xffffffff
je 0x410ee7
neg esi
test edx, edx
jne 0x40f2c5
lea eax, [ebp - 0x10]
mov dword [ebp - 0x8c], eax
mov al, byte [ecx + 0x88]
mov byte [ebp - 0x10], al
mov edx, 1
mov dword [ebp - 0x9c], edx
mov edx, dword [ebp + 0x1c]
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xc0], eax
lea ebx, [ecx + 0x18]
mov dword [ebp - 0x98], ebx
dec dword [ebp - 0xa4]
not esi
mov dword [ebp - 0xbc], esi
mov esi, dword [ebp - 0xa8]
cmp esi, 0xfffffffe
jne 0x40f3a9
test edi, edi
sete al
cmp dword [ebp - 0x94], 0x3f
setg cl
or cl, al
movzx eax, cl
cmp eax, 1
mov edx, edi
je 0x40f494
mov al, 1
test al, al
mov ecx, dword [ebp + 8]
je 0x40f49c
mov eax, edx
neg eax
mov edx, dword [ebp - 0x94]
lea esi, [edx - 0x40]
cmp esi, eax
mov edi, eax
jb 0x40f341
mov edi, esi
mov dword [ebp - 0x98], ebx
lea ebx, [edx - 0xcc712fa]
sub ebx, edi
cmp eax, esi
ja 0x40f355
mov eax, esi
add ebx, 0xcc712fa
mov dword [ebp - 0x18], ebx
mov esi, edi
mov dword [ebp - 0x14], edi
neg esi
mov dword [ebp - 0x20], esi
mov esi, edx
lea edi, [esi + ecx + 0x18]
neg eax
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov cl, byte [ebx]
inc ebx
inc esi
mov byte [edi], cl
inc dword [edx]
inc edi
dec eax
jne 0x40f380
mov edx, dword [ebp + 0x10]
add edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
add dword [ebp - 0xc0], eax
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x98]
jmp 0x40f4a2
mov dword [ebp - 0xb4], edi
test esi, esi
setne al
test edx, edx
setne cl
mov dword [ebp - 0x28], 0
xor cl, al
jne 0x40f46a
test esi, esi
je 0x40f46a
mov dword [ebp - 0x98], ebx
neg esi
mov eax, edx
neg eax
cmp esi, eax
ja 0x40f3e2
mov esi, eax
mov dword [ebp - 0x2c], esi
mov eax, esi
neg eax
mov dword [ebp - 0x28], eax
xor esi, esi
mov edi, eax
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x9c]
mov edx, dword [ebp - 0x18]
nop
nop
nop
nop
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], edx
mov ecx, edx
sub ecx, dword [ebp - 0x90]
cmp ecx, eax
mov edx, eax
mov eax, 0
jb 0x40f41b
mov eax, edx
neg ecx
sub ecx, eax
neg ecx
mov eax, dword [ebp - 0x8c]
mov esi, edx
mov edx, eax
mov al, byte [edx + ecx]
mov ecx, dword [ebp - 0x18]
mov byte [edx + ecx], al
mov edx, ecx
mov byte [ebx], al
inc edx
cmp edx, esi
mov ecx, 0
mov eax, esi
je 0x40f446
mov ecx, edx
mov esi, dword [ebp - 0x20]
inc esi
inc ebx
dec edi
mov edx, ecx
jne 0x40f400
mov edx, dword [ebp - 0x2c]
neg edx
sub edx, dword [ebp - 0xa8]
neg edx
mov esi, edx
mov ebx, dword [ebp - 0x98]
mov edi, dword [ebp - 0x1c]
jmp 0x40f476
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0xa8], esi
test ecx, ecx
mov edx, eax
je 0x40f484
mov edx, ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x20], ebx
mov esi, edi
jmp 0x40f6aa
mov ecx, dword [ebp - 0x94]
jmp 0x40f4a2
mov ecx, dword [ebp - 0x94]
cmp ecx, 4
jg 0x40f4bc
mov eax, dword [ebp + 8]
mov dword [eax + 0x58], ecx
cmp dword [ebp + 0x24], 0
setne al
movzx eax, al
jmp 0x410ee7
mov dword [ebp - 0xb4], edx
mov dword [ebp - 0x94], ecx
mov ecx, dword [ebp - 0xb8]
neg ecx
mov eax, dword [ebp + 8]
sub ecx, dword [eax + 4]
neg ecx
mov eax, 0x300
shl eax, cl
cmp eax, 0xfffff8ca
je 0x40f5dc
xor ecx, ecx
cmp eax, 0xfffff8ca
je 0x40f5b4
lea edx, [eax + 0x736]
mov esi, edx
xor esi, 0xf
xor ecx, ecx
and esi, edx
je 0x40f5b0
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x98], ebx
mov edx, dword [ebp - 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
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 edi, ecx
and edi, 8
mov ebx, ecx
xor ebx, 8
or ebx, edi
mov word [edx + ebx*2 + 0xe], 0x400
mov word [edx + ebx*2 + 0xc], 0x400
mov word [edx + ebx*2 + 0xa], 0x400
mov word [edx + ebx*2 + 8], 0x400
mov word [edx + ebx*2 + 6], 0x400
mov word [edx + ebx*2 + 4], 0x400
mov word [edx + ebx*2 + 2], 0x400
mov word [edx + ebx*2], 0x400
add ecx, 0x10
cmp esi, ecx
jne 0x40f520
mov ecx, esi
mov ebx, dword [ebp - 0x98]
mov edx, dword [ebp - 0x14]
cmp edx, ecx
je 0x40f5dc
add eax, 0x736
sub eax, ecx
mov edx, dword [ebp - 0x1c]
lea edx, [edx + ecx*2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], 0x400
inc ecx
add edx, 2
dec eax
jne 0x40f5d0
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x9c]
mov byte [ecx + eax - 1], 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 esi, eax
not esi
and edx, 0x3c7f
and ecx, 0x80
and esi, 0x3c7f
and eax, 0xc300
add ecx, edx
add eax, esi
xor eax, ecx
shl eax, 8
movzx ecx, byte [edi + 0x1a]
add ecx, eax
shl ecx, 8
movzx eax, byte [edi + 0x1b]
add eax, ecx
shl eax, 8
movzx ecx, byte [edi + 0x1c]
add ecx, eax
mov dword [ebp - 0x14], ecx
lea eax, [edi + 0x1d]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x90], 1
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x28], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0xd8], 1
mov dword [ebp - 0xdc], 1
mov dword [ebp - 0xe0], 1
mov dword [ebp - 0xac], 0
mov dword [ebp - 0x88], 0
mov edx, dword [ebp - 0x9c]
xor ecx, ecx
mov esi, dword [ebp - 0x1c]
mov edi, 8
lea eax, [esi + 0x664]
mov dword [ebp - 0xec], eax
lea eax, [esi + 0xa68]
mov dword [ebp - 0xe8], eax
lea eax, [ebx - 0x40]
mov dword [ebp - 0xd0], eax
lea eax, [ebx - 1]
mov dword [ebp - 0xc8], eax
lea eax, [ebx + 0x17]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp + 8]
lea eax, [ebx + eax + 0x18]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0x8c]
mov al, byte [edx + eax - 1]
mov dword [ebp - 0x18], eax
sub edi, dword [ebp - 0xb8]
mov dword [ebp - 0xc4], edi
not dword [ebp - 0xa4]
not dword [ebp - 0xbc]
mov edx, dword [ebp - 0x28]
jmp 0x40f738
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xdc], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x80], ecx
mov edi, dword [ebp - 0x38]
jmp 0x40f77d
sub eax, ecx
mov esi, edi
lea edi, [edx + edx + 9]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x18]
mov byte [ecx + edx], bl
inc edx
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x80], esi
mov ebx, dword [ebp - 0x98]
mov edx, edi
lea ecx, [ebx + 0x9dfa417]
sub ecx, dword [ebp - 0x20]
add ecx, 0xf6205be9
mov edi, dword [ebp - 0x94]
neg edi
sub ecx, edi
cmp ecx, 0x17
jg 0x40f870
mov eax, 1
test ecx, ecx
js 0x410ee7
mov dword [ebp - 0xb0], edi
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x38], edx
mov ecx, dword [ebp - 0x20]
jle 0x40faca
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0xc8]
lea eax, [edx + eax + 0x3ba72e38]
sub eax, ecx
xor esi, esi
cmp eax, 0x3ba72e37
je 0x40fa9c
mov eax, dword [ebp - 0x98]
sub eax, dword [ebp - 0xb0]
add eax, 0x45e144d0
sub eax, ecx
add eax, 0xba1ebb30
mov dword [ebp - 0xcc], eax
mov edx, eax
xor edx, 0x1f
xor esi, esi
and edx, eax
mov edi, dword [ebp + 8]
je 0x40fa94
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x94]
lea edx, [eax - 0x1377e095]
sub edx, ecx
add edx, 0x1377e095
mov eax, dword [ebp - 0xc8]
lea eax, [eax + edx]
add eax, ecx
mov ebx, dword [ebp - 0x98]
cmp ebx, eax
setbe byte [ebp - 0x2c]
add edx, dword [ebp - 0xe4]
add edx, edi
cmp ecx, edx
setbe dl
xor esi, esi
xor dl, byte [ebp - 0x2c]
jne 0x40f878
cmp ebx, eax
mov eax, 0xffffffff
mov edx, dword [ebp - 0x28]
jbe 0x40fa94
jmp 0x40f880
mov edi, dword [ebp - 0x14]
jmp 0x40fbf3
mov eax, 0xffffffff
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x28], edx
mov bl, byte [ecx + esi]
mov byte [ebp - 0x2c], bl
mov bl, byte [ecx + esi + 1]
mov byte [ebp - 0x30], bl
mov bl, byte [ecx + esi + 2]
mov byte [ebp - 0x34], bl
mov bl, byte [ecx + esi + 3]
mov byte [ebp - 0x3c], bl
mov bl, byte [ecx + esi + 4]
mov byte [ebp - 0x40], bl
mov bl, byte [ecx + esi + 5]
mov byte [ebp - 0x44], bl
mov bl, byte [ecx + esi + 6]
mov byte [ebp - 0x48], bl
mov bl, byte [ecx + esi + 7]
mov byte [ebp - 0x49], bl
mov dword [ebp - 0x50], eax
mov ebx, esi
mov dword [ebp - 0x58], eax
mov eax, esi
mov dl, byte [ecx + esi + 8]
mov byte [ebp - 0x6a], dl
mov dl, byte [ecx + esi + 9]
mov byte [ebp - 0x6c], dl
mov dl, byte [ecx + esi + 0xa]
mov byte [ebp - 0x6e], dl
mov dl, byte [ecx + esi + 0xb]
mov byte [ebp - 0x70], dl
mov dl, byte [ecx + esi + 0xc]
mov byte [ebp - 0x72], dl
mov dl, byte [ecx + esi + 0xd]
mov byte [ebp - 0x74], dl
mov dl, byte [ecx + esi + 0xe]
mov byte [ebp - 0x7c], dl
mov edx, dword [ebp - 0x50]
and edx, 0xbefea0a
and ebx, 0xf41015f5
add ebx, edx
mov edx, dword [ebp - 0x20]
not edx
xor ebx, 0xbefea1a
and edx, 0x10
mov dword [ebp - 0x68], edx
or ebx, edx
mov dl, byte [ecx + ebx]
mov byte [ebp - 0x50], dl
mov dl, byte [ecx + ebx + 1]
mov byte [ebp - 0x51], dl
mov dl, byte [ecx + ebx + 2]
mov byte [ebp - 0x59], dl
mov dl, byte [ecx + ebx + 3]
mov byte [ebp - 0x5a], dl
mov dl, byte [ecx + ebx + 4]
mov byte [ebp - 0x5b], dl
mov dl, byte [ecx + ebx + 5]
mov byte [ebp - 0x5c], dl
mov dl, byte [ecx + ebx + 6]
mov byte [ebp - 0x60], dl
mov dl, byte [ecx + ebx + 7]
mov byte [ebp - 0x61], dl
mov dl, byte [ecx + ebx + 8]
mov byte [ebp - 0x69], dl
mov dl, byte [ecx + ebx + 9]
mov byte [ebp - 0x6b], dl
mov dl, byte [ecx + ebx + 0xa]
mov byte [ebp - 0x6d], dl
mov dl, byte [ecx + ebx + 0xb]
mov byte [ebp - 0x6f], dl
mov dl, byte [ecx + ebx + 0xc]
mov byte [ebp - 0x71], dl
mov dl, byte [ecx + ebx + 0xd]
mov byte [ebp - 0x73], dl
mov dl, byte [ecx + ebx + 0xe]
mov byte [ebp - 0x78], dl
mov bl, byte [ecx + ebx + 0xf]
mov bh, byte [ecx + esi + 0xf]
mov byte [edi + esi + 0x27], bh
mov dl, byte [ebp - 0x7c]
mov byte [edi + esi + 0x26], dl
mov dl, byte [ebp - 0x74]
mov byte [edi + esi + 0x25], dl
mov dl, byte [ebp - 0x72]
mov byte [edi + esi + 0x24], dl
mov dl, byte [ebp - 0x70]
mov byte [edi + esi + 0x23], dl
mov dl, byte [ebp - 0x6e]
mov byte [edi + esi + 0x22], dl
mov dl, byte [ebp - 0x6c]
mov byte [edi + esi + 0x21], dl
mov dl, byte [ebp - 0x6a]
mov byte [edi + esi + 0x20], dl
mov bh, byte [ebp - 0x49]
mov byte [edi + esi + 0x1f], bh
mov bh, byte [ebp - 0x48]
mov byte [edi + esi + 0x1e], bh
mov bh, byte [ebp - 0x44]
mov byte [edi + esi + 0x1d], bh
mov bh, byte [ebp - 0x40]
mov byte [edi + esi + 0x1c], bh
mov bh, byte [ebp - 0x3c]
mov byte [edi + esi + 0x1b], bh
mov bh, byte [ebp - 0x34]
mov byte [edi + esi + 0x1a], bh
mov bh, byte [ebp - 0x30]
mov byte [edi + esi + 0x19], bh
mov bh, byte [ebp - 0x2c]
mov byte [edi + esi + 0x18], bh
mov edx, dword [ebp - 0x58]
and edx, 0x9f27b75
and eax, 0xf60d848a
add eax, edx
xor eax, 0x9f27b65
or eax, dword [ebp - 0x68]
mov byte [edi + eax + 0x27], bl
mov edx, dword [ebp - 0x28]
mov bl, byte [ebp - 0x78]
mov byte [edi + eax + 0x26], bl
mov bl, byte [ebp - 0x73]
mov byte [edi + eax + 0x25], bl
mov bl, byte [ebp - 0x71]
mov byte [edi + eax + 0x24], bl
mov bl, byte [ebp - 0x6f]
mov byte [edi + eax + 0x23], bl
mov bl, byte [ebp - 0x6d]
mov byte [edi + eax + 0x22], bl
mov bl, byte [ebp - 0x6b]
mov byte [edi + eax + 0x21], bl
mov bl, byte [ebp - 0x69]
mov byte [edi + eax + 0x20], bl
mov bl, byte [ebp - 0x61]
mov byte [edi + eax + 0x1f], bl
mov bl, byte [ebp - 0x60]
mov byte [edi + eax + 0x1e], bl
mov bl, byte [ebp - 0x5c]
mov byte [edi + eax + 0x1d], bl
mov bl, byte [ebp - 0x5b]
mov byte [edi + eax + 0x1c], bl
mov bl, byte [ebp - 0x5a]
mov byte [edi + eax + 0x1b], bl
mov bl, byte [ebp - 0x59]
mov byte [edi + eax + 0x1a], bl
mov bl, byte [ebp - 0x51]
mov byte [edi + eax + 0x19], bl
mov bl, byte [ebp - 0x50]
mov byte [edi + eax + 0x18], bl
mov eax, dword [ebp - 0x20]
add esi, 0x20
add eax, 0xffffffe0
cmp edx, esi
jne 0x40f880
mov esi, edx
cmp dword [ebp - 0xcc], esi
je 0x40faca
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x98]
lea eax, [edx + eax]
sub eax, esi
sub eax, ecx
lea edi, [edx + esi]
lea edx, [ecx + esi]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov bl, byte [edx]
mov byte [edi], bl
inc esi
inc edi
inc edx
dec eax
jne 0x40fac0
mov esi, dword [ebp - 0xb4]
test esi, esi
sete al
cmp dword [ebp - 0xa0], 0x3f
setg dl
or dl, al
movzx eax, dl
cmp eax, 1
mov edi, dword [ebp - 0x14]
je 0x40fbb0
mov al, 1
test al, al
je 0x40fbb0
mov eax, esi
neg eax
mov edi, dword [ebp - 0x94]
mov ebx, dword [ebp - 0xd0]
lea edx, [ebx + edi + 0x5872f610]
sub edx, ecx
add edx, 0xa78d09f0
cmp edx, eax
mov dword [ebp - 0x20], eax
mov esi, dword [ebp - 0x98]
jb 0x40fb29
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0xb0]
sub edx, esi
mov esi, 0x9c31eee2
sub esi, edx
sub esi, ecx
lea edx, [ebx + edi]
sub edi, ecx
sub edx, ecx
add esi, 0xbc44b8a2
mov ecx, dword [ebp - 0x20]
sub esi, ecx
cmp eax, edx
ja 0x40fb52
mov eax, edx
add esi, 0xa789587c
mov dword [ebp - 0x28], esi
neg ecx
mov dword [ebp - 0x20], ecx
add edi, dword [ebp - 0xd4]
neg eax
mov edx, dword [ebp - 0xc0]
mov esi, dword [ebp + 0x14]
mov ecx, dword [ebp - 0xa0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov bl, byte [edx]
inc edx
inc ecx
mov byte [edi], bl
inc dword [esi]
inc edi
dec eax
jne 0x40fb80
mov eax, dword [ebp - 0x20]
sub dword [ebp - 0xb4], eax
add dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x98]
mov edi, dword [ebp - 0x14]
jmp 0x40fbbc
mov eax, dword [ebp - 0xa0]
mov ebx, dword [ebp - 0x98]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x94], eax
cmp eax, 0x17
setg al
cmp dword [ebp + 0x24], 0
setne cl
or cl, al
movzx eax, cl
cmp eax, 1
je 0x40fbf0
mov al, 1
test al, al
mov dword [ebp - 0x20], ebx
je 0x40fbf3
jmp 0x410ae5
mov dword [ebp - 0x20], ebx
mov ecx, dword [ebp - 0x84]
cmp ecx, dword [ebp + 0x1c]
jae 0x410ae8
mov eax, dword [ebp - 0xac]
lea eax, [ecx + eax]
not eax
mov ecx, eax
or ecx, dword [ebp - 0xa4]
not ecx
mov dword [ebp - 0x28], ecx
mov ebx, edx
shl ebx, 4
mov dword [ebp - 0x2c], ebx
lea esi, [ecx + ebx - 0x141f9a54]
mov ecx, dword [ebp - 0x24]
cmp ecx, 0xffffff
ja 0x40fc50
mov dword [ebp - 0x38], edx
shl ecx, 8
shl edi, 8
mov ebx, ecx
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x20], ecx
mov ecx, ebx
add edi, edx
jmp 0x40fc53
mov dword [ebp - 0x38], edx
mov edx, edi
mov ebx, ecx
shr ebx, 0xb
mov edi, esi
mov esi, dword [ebp - 0x1c]
movzx esi, word [esi + edi*2 + 0x283f34a8]
imul ebx, esi
cmp edx, ebx
jae 0x40fe50
mov dword [ebp - 0x14], edx
mov edx, 0x800
sub edx, esi
shr edx, 5
neg esi
sub esi, edx
neg esi
mov ecx, dword [ebp - 0x1c]
mov word [ecx + edi*2 + 0x283f34a8], si
or eax, dword [ebp - 0xbc]
not eax
mov ecx, dword [ebp - 0xb8]
shl eax, cl
mov ecx, dword [ebp - 0x18]
movzx edx, cl
mov ecx, dword [ebp - 0xc4]
shr edx, cl
add edx, eax
imul eax, edx, 0x300
lea ecx, [eax + 0x736]
mov dword [ebp - 0x30], ecx
mov edx, 1
mov ecx, dword [ebp - 0x38]
cmp ecx, 7
jl 0x410060
mov ecx, dword [ebp - 0x80]
lea ecx, [ecx + 0x187c2315]
sub ecx, dword [ebp - 0x90]
lea esi, [ecx - 0x187c2315]
xor edx, edx
cmp esi, dword [ebp - 0x9c]
jb 0x40fcf5
mov edx, dword [ebp - 0x9c]
mov esi, 0x187c2315
sub esi, ecx
sub edx, esi
mov ecx, dword [ebp - 0x8c]
movzx ecx, byte [ecx + edx]
neg eax
mov edx, 0x836
sub edx, eax
mov dword [ebp - 0x34], edx
mov edx, 1
nop
nop
nop
nop
nop
nop
nop
add ecx, ecx
mov edi, ecx
xor edi, 0xfffffefe
and edi, ecx
mov dword [ebp - 0x24], edi
mov eax, dword [ebp - 0x34]
lea esi, [eax + edx]
mov eax, edi
neg eax
sub esi, eax
mov dword [ebp - 0x28], esi
cmp ebx, 0xffffff
ja 0x40fd90
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x18], edx
shl ebx, 8
mov eax, dword [ebp - 0x14]
shl eax, 8
mov edx, dword [ebp - 0x20]
movzx esi, byte [edx]
inc edx
mov dword [ebp - 0x20], edx
mov edx, esi
not edx
mov edi, eax
not edi
and edx, 0x9629edec
and esi, 0x13
and edi, 0x9629edec
and eax, 0x69d61200
add esi, edx
add eax, edi
xor eax, esi
mov ecx, dword [ebp - 0x1c]
mov edi, ebx
mov edx, dword [ebp - 0x28]
jmp 0x40fda1
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x14]
mov edi, ebx
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x1c]
mov ebx, edi
shr ebx, 0xb
movzx esi, word [ecx + edx*2]
imul ebx, esi
mov ecx, eax
sub ecx, ebx
jae 0x40fe00
mov dword [ebp - 0x14], eax
mov eax, 0x800
sub eax, esi
shr eax, 5
neg esi
sub esi, eax
neg esi
mov eax, dword [ebp - 0x1c]
mov word [eax + edx*2], si
mov ecx, dword [ebp - 0x18]
add ecx, ecx
mov edi, dword [ebp - 0x24]
test edi, edi
sete al
cmp ecx, 0x100
setl dl
xor dl, al
jne 0x410046
test edi, edi
mov edx, ecx
mov ecx, dword [ebp - 0x2c]
je 0x40fd20
jmp 0x410051
mov eax, edx
mov edx, esi
shr edx, 5
sub esi, edx
mov edx, dword [ebp - 0x1c]
mov word [edx + eax*2], si
sub edi, ebx
mov eax, dword [ebp - 0x18]
lea eax, [eax + eax + 1]
mov ebx, dword [ebp - 0x24]
test ebx, ebx
setne dl
cmp eax, 0x100
setl dh
xor dh, dl
jne 0x41004a
test ebx, ebx
mov ebx, edi
mov dword [ebp - 0x14], ecx
mov edx, eax
mov ecx, dword [ebp - 0x2c]
jne 0x40fd20
jmp 0x410051
sub ecx, ebx
add edx, 0xfedf5e0e
sub edx, ebx
mov eax, esi
shr eax, 5
add esi, 0xffff82ef
sub esi, eax
add edx, 0x120a1f2
add esi, 0x7d11
mov ebx, dword [ebp - 0x1c]
mov word [ebx + edi*2 + 0x283f34a8], si
mov eax, dword [ebp - 0x38]
neg eax
mov dword [ebp - 0x18], eax
mov esi, 0xc0
sub esi, eax
cmp ecx, 0xffffff
mov edi, ebx
ja 0x40fead
shl ecx, 8
shl edx, 8
mov ebx, esi
mov esi, dword [ebp - 0x20]
movzx eax, byte [esi]
inc esi
mov dword [ebp - 0x20], esi
mov esi, ebx
add edx, eax
mov dword [ebp - 0x14], esi
mov eax, ecx
shr eax, 0xb
mov ebx, ecx
movzx esi, word [edi + esi*2]
imul eax, esi
mov ecx, edx
sub edx, eax
jb 0x4101a3
add ebx, 0xff4f8746
sub ebx, eax
add ebx, 0xb078ba
mov eax, esi
shr eax, 5
sub esi, eax
mov eax, dword [ebp - 0x14]
mov word [edi + eax*2], si
mov esi, 0xcc
sub esi, dword [ebp - 0x18]
cmp ebx, 0xffffff
ja 0x40ff1d
shl ebx, 8
shl edx, 8
mov ecx, dword [ebp - 0x20]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x20], ecx
mov ecx, edx
not ecx
and ecx, 0x7cccd200
and edx, 0x83332d00
add eax, 0x7cccd200
add edx, ecx
xor edx, eax
mov dword [ebp - 0x14], edx
mov eax, ebx
shr eax, 0xb
movzx ecx, word [edi + esi*2]
imul eax, ecx
mov dword [ebp - 0x24], esi
mov esi, edx
sub esi, eax
jae 0x410209
mov edx, 0x800
sub edx, ecx
shr edx, 5
neg ecx
sub ecx, edx
neg ecx
mov edx, dword [ebp - 0x24]
mov word [edi + edx*2], cx
mov esi, dword [ebp - 0x2c]
add esi, 0xf0
mov ecx, dword [ebp - 0x28]
neg ecx
sub esi, ecx
cmp eax, 0xffffff
ja 0x40ff80
shl eax, 8
mov edi, dword [ebp - 0x14]
shl edi, 8
mov edx, dword [ebp - 0x20]
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x20], edx
add edi, ecx
jmp 0x40ff83
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x14], edi
mov edx, eax
shr edx, 0xb
mov ebx, dword [ebp - 0x1c]
movzx ecx, word [ebx + esi*2]
imul edx, ecx
mov dword [ebp - 0x24], edx
sub edi, edx
jae 0x41027f
mov eax, 0x800
sub eax, ecx
shr eax, 5
neg ecx
sub eax, ecx
mov word [ebx + esi*2], ax
mov eax, 1
cmp dword [ebp - 0x88], 0
mov edx, dword [ebp - 0x38]
je 0x410ee7
mov ebx, dword [ebp - 0x9c]
cmp dword [ebp - 0x88], ebx
sbb eax, eax
mov dword [ebp - 0x28], eax
cmp edx, 6
setg byte [ebp - 0x2c]
mov eax, dword [ebp - 0x80]
lea edx, [eax + 0x1b057598]
sub edx, dword [ebp - 0x90]
lea esi, [edx - 0x1b057598]
cmp esi, ebx
mov esi, 0
jb 0x40ffff
mov esi, ebx
mov edi, 0x1b057598
sub edi, edx
sub esi, edi
mov edx, dword [ebp - 0x8c]
mov cl, byte [edx + esi]
mov dword [ebp - 0x18], ecx
mov byte [edx + eax], cl
neg eax
mov esi, 1
sub esi, eax
movzx edx, byte [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
and eax, 1
mov ecx, dword [ebp - 0x88]
neg ecx
cmp esi, ebx
mov edi, 0
je 0x40f750
mov edi, esi
jmp 0x40f750
mov edx, ecx
jmp 0x410051
mov ebx, edi
mov dword [ebp - 0x14], ecx
mov edx, eax
cmp edx, 0xff
mov eax, ebx
jg 0x410120
nop
mov ecx, dword [ebp - 0x30]
neg ecx
mov eax, edx
sub eax, ecx
cmp ebx, 0xffffff
ja 0x410090
mov dword [ebp - 0x18], edx
shl ebx, 8
mov esi, dword [ebp - 0x14]
shl esi, 8
mov edx, dword [ebp - 0x20]
movzx ecx, byte [edx]
inc edx
mov dword [ebp - 0x20], edx
mov edi, esi
add edi, ecx
jmp 0x410096
mov dword [ebp - 0x18], edx
mov edi, dword [ebp - 0x14]
mov edx, ebx
shr ebx, 0xb
mov esi, dword [ebp - 0x1c]
movzx ecx, word [esi + eax*2]
imul ebx, ecx
cmp edi, ebx
jae 0x4100d0
mov dword [ebp - 0x14], edi
mov edx, 0x800
sub edx, ecx
shr edx, 5
add edx, ecx
mov word [esi + eax*2], dx
mov edx, dword [ebp - 0x18]
add edx, edx
mov eax, ebx
jmp 0x410112
mov dword [ebp - 0x14], edx
mov edx, ecx
shr edx, 5
sub ecx, edx
mov word [esi + eax*2], cx
mov ecx, dword [ebp - 0x14]
sub ecx, ebx
add edi, 0x4bfbe1b9
sub edi, ebx
mov edx, dword [ebp - 0x18]
add edx, edx
mov eax, edx
not eax
and eax, 0xac768d2c
and edx, 0x538972d2
add edx, eax
add edi, 0xb4041e47
mov dword [ebp - 0x14], edi
xor edx, 0xac768d2d
mov eax, ecx
cmp edx, 0x100
mov ebx, eax
jl 0x410060
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x18], edx
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp - 0x84]
mov byte [eax + esi], dl
mov ecx, dword [ebp - 0x88]
mov eax, ecx
neg eax
mov ebx, edx
mov edx, dword [ebp - 0x9c]
cmp ecx, edx
mov ecx, eax
sbb ecx, 0
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x80]
mov byte [eax + edi], bl
inc edi
cmp edi, edx
mov eax, 0
je 0x410163
mov eax, edi
inc esi
mov dword [ebp - 0x84], esi
neg ecx
mov dword [ebp - 0x88], ecx
mov ecx, dword [ebp - 0x38]
cmp ecx, 4
mov dword [ebp - 0x80], eax
mov ebx, dword [ebp - 0x98]
mov edi, 0
jl 0x40f77d
cmp ecx, 9
jg 0x410196
add ecx, 0xfffffffd
jmp 0x410199
add ecx, 0xfffffffa
mov edi, ecx
mov dword [ebp - 0x80], eax
jmp 0x40f77d
mov dword [ebp - 0x18], ecx
mov ebx, 0x800
sub ebx, esi
shr ebx, 5
neg esi
sub ebx, esi
mov ecx, dword [ebp - 0x14]
mov word [edi + ecx*2], bx
cmp dword [ebp - 0x38], 6
setg cl
movzx esi, cl
mov dword [ebp - 0x24], 0x332
mov dword [ebp - 0x30], 0x434
mov dword [ebp - 0x14], 0x333
mov edx, dword [ebp - 0x90]
mov dword [ebp - 0x78], edx
mov ebx, dword [ebp - 0xec]
lea edx, [esi + esi*2]
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0xd8]
mov dword [ebp - 0x7c], edx
mov edx, dword [ebp - 0xdc]
mov dword [ebp - 0xe0], edx
jmp 0x410413
sub ebx, eax
mov eax, ecx
shr eax, 5
sub ecx, eax
mov eax, dword [ebp - 0x24]
mov word [edi + eax*2], cx
mov ecx, 0xd8
sub ecx, dword [ebp - 0x18]
cmp ebx, 0xffffff
mov edx, dword [ebp - 0x20]
ja 0x410238
shl ebx, 8
shl esi, 8
movzx eax, byte [edx]
inc edx
add esi, eax
mov edi, esi
mov dword [ebp - 0x20], edx
mov eax, ebx
shr eax, 0xb
mov edx, dword [ebp - 0x1c]
movzx esi, word [edx + ecx*2]
imul eax, esi
cmp edi, eax
jae 0x4102b8
mov dword [ebp - 0x18], edi
mov edi, 0x800
sub edi, esi
shr edi, 5
neg esi
sub edi, esi
mov word [edx + ecx*2], di
mov ecx, dword [ebp - 0xd8]
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0xdc]
mov esi, dword [ebp - 0x90]
jmp 0x4103d8
mov dword [ebp - 0x18], edi
mov edi, ebx
mov edx, esi
mov esi, ecx
shr esi, 5
sub ecx, esi
mov word [edi + edx*2], cx
add eax, 0xbb7e83a
sub eax, dword [ebp - 0x24]
add eax, 0xf44817c6
mov ecx, dword [ebp - 0x90]
mov dword [ebp - 0x2c], ecx
mov esi, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
jmp 0x4103d8
mov dword [ebp - 0x14], ecx
mov ecx, esi
shr ecx, 5
add esi, 0x867
sub esi, ecx
add esi, 0xfffff799
mov ecx, dword [ebp - 0x14]
mov word [edx + ecx*2], si
sub ebx, eax
add edi, 0x87ef29a7
sub edi, eax
add edi, 0x7810d659
mov eax, dword [ebp - 0x38]
lea esi, [eax + 0x2eeafdbd]
cmp ebx, 0xffffff
mov ecx, edx
mov edx, ebx
ja 0x410339
shl edx, 8
mov dword [ebp - 0x24], edx
shl edi, 8
mov edx, esi
mov esi, dword [ebp - 0x20]
movzx eax, byte [esi]
inc esi
mov dword [ebp - 0x20], esi
mov esi, eax
not esi
mov ebx, edi
not ebx
and esi, 0xe0e45a44
and eax, 0xbb
and ebx, 0xe0e45a44
and edi, 0x1f1ba500
add eax, esi
mov esi, edx
mov edx, dword [ebp - 0x24]
add edi, ebx
xor edi, eax
mov ebx, dword [ebp - 0xe0]
mov dword [ebp - 0x24], edx
mov eax, edx
shr eax, 0xb
mov edx, esi
movzx esi, word [ecx + edx*2 - 0x5dd5f9b2]
imul eax, esi
cmp edi, eax
jae 0x410384
mov dword [ebp - 0x18], edi
mov dword [ebp - 0xe0], ebx
mov edi, 0x800
sub edi, esi
shr edi, 5
neg esi
sub esi, edi
neg esi
mov word [ecx + edx*2 - 0x5dd5f9b2], si
mov ecx, dword [ebp - 0xdc]
mov dword [ebp - 0x2c], ecx
jmp 0x4103cc
mov ebx, esi
shr ebx, 5
add esi, 0xfffff711
sub esi, ebx
add esi, 0x8ef
mov word [ecx + edx*2 - 0x5dd5f9b2], si
mov ecx, dword [ebp - 0x24]
sub ecx, eax
add edi, 0x8b2ef2e6
sub edi, eax
add edi, 0x74d10d1a
mov dword [ebp - 0x18], edi
mov eax, ecx
mov ecx, dword [ebp - 0xe0]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0xdc]
mov dword [ebp - 0xe0], ecx
mov esi, dword [ebp - 0x90]
mov edx, dword [ebp - 0xd8]
cmp dword [ebp - 0x38], 6
setg cl
movzx edi, cl
mov dword [ebp - 0x24], 0x534
mov dword [ebp - 0x30], 0x636
mov dword [ebp - 0x14], 0x535
mov ebx, dword [ebp - 0xe8]
mov dword [ebp - 0x78], esi
lea esi, [edi + edi*2 + 8]
mov dword [ebp - 0x38], esi
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x90], ecx
mov dword [ebp - 0x7c], edx
mov edi, dword [ebp - 0x20]
cmp eax, 0xffffff
ja 0x410431
shl eax, 8
mov ecx, dword [ebp - 0x18]
shl ecx, 8
movzx esi, byte [edi]
inc edi
mov dword [ebp - 0x20], edi
add ecx, esi
jmp 0x410437
mov dword [ebp - 0x20], edi
mov ecx, dword [ebp - 0x18]
mov edx, eax
shr edx, 0xb
movzx edi, word [ebx]
imul edx, edi
mov esi, ecx
sub esi, edx
jae 0x410495
mov eax, 0x800
sub eax, edi
shr eax, 5
add eax, edi
mov word [ebx], ax
mov eax, dword [ebp - 0x28]
mov esi, eax
shl esi, 3
mov eax, esi
not eax
and eax, 0xef22e2a
and esi, 0x710dd1d0
add esi, eax
xor esi, 0xf10dd1d7
inc esi
sub esi, dword [ebp - 0x24]
add esi, esi
mov eax, dword [ebp - 0x1c]
sub eax, esi
mov dword [ebp - 0x28], eax
mov ebx, 3
mov dword [ebp - 0x3c], 0
jmp 0x410530
sub eax, edx
mov edx, edi
shr edx, 5
sub edi, edx
mov word [ebx], di
cmp eax, 0xffffff
ja 0x4104de
shl eax, 8
shl esi, 8
mov edi, dword [ebp - 0x20]
movzx edx, byte [edi]
inc edi
mov dword [ebp - 0x20], edi
mov edi, edx
not edi
mov ebx, esi
not ebx
and edi, 0x508df977
and edx, 0x88
and ebx, 0x508df977
and esi, 0xaf720600
add edx, edi
add esi, ebx
xor esi, edx
mov ecx, esi
mov esi, dword [ebp - 0x14]
mov edx, eax
shr edx, 0xb
mov ebx, dword [ebp - 0x1c]
movzx esi, word [ebx + esi*2]
imul edx, esi
mov edi, ecx
sub edi, edx
jae 0x410536
mov eax, 0x800
sub eax, esi
shr eax, 5
neg esi
sub eax, esi
mov esi, dword [ebp - 0x14]
mov word [ebx + esi*2], ax
mov eax, dword [ebp - 0x28]
lea eax, [eax*8 + 0x82]
mov esi, dword [ebp - 0x24]
neg esi
sub eax, esi
lea eax, [ebx + eax*2]
mov dword [ebp - 0x28], eax
mov ebx, 3
mov dword [ebp - 0x3c], 8
mov esi, edx
mov edi, ecx
jmp 0x410567
add eax, 0x98b9c045
sub eax, edx
mov ecx, esi
shr ecx, 5
sub esi, ecx
add eax, 0x67463fbb
mov ecx, dword [ebp - 0x14]
mov word [ebx + ecx*2], si
mov ecx, dword [ebp - 0x30]
lea ecx, [ebx + ecx*2]
mov dword [ebp - 0x28], ecx
mov ebx, 8
mov dword [ebp - 0x3c], 0x10
mov esi, eax
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x18], 1
mov eax, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp esi, 0xffffff
ja 0x4105a0
mov dword [ebp - 0x24], eax
shl esi, 8
shl edi, 8
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x20], ecx
add edi, edx
jmp 0x4105a3
mov dword [ebp - 0x24], eax
mov edx, esi
mov ecx, edx
shr ecx, 0xb
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x28]
movzx esi, word [ebx + eax*2]
imul ecx, esi
cmp edi, ecx
jae 0x4105e0
mov dword [ebp - 0x14], edi
mov edx, 0x800
sub edx, esi
shr edx, 5
neg esi
sub edx, esi
mov word [ebx + eax*2], dx
add eax, eax
mov dword [ebp - 0x18], eax
mov esi, ecx
jmp 0x41061f
add edx, 0xf2746bf2
sub edx, ecx
add edx, 0xd8b940e
add edi, 0x149c5174
sub edi, ecx
add edi, 0xeb63ae8c
mov dword [ebp - 0x14], edi
mov edi, esi
shr edi, 5
add esi, 0xffffad30
sub esi, edi
add esi, 0x52d0
mov word [ebx + eax*2], si
lea eax, [eax + eax + 1]
mov dword [ebp - 0x18], eax
mov esi, edx
mov eax, dword [ebp - 0x24]
dec eax
mov edi, dword [ebp - 0x14]
jne 0x410580
mov edx, 1
mov ecx, dword [ebp - 0x2c]
shl edx, cl
mov dword [ebp - 0x40], edx
mov eax, dword [ebp - 0x18]
lea eax, [eax + 0x59aa359d]
sub eax, edx
mov ecx, dword [ebp - 0x3c]
lea eax, [eax + ecx - 0x59aa359d]
cmp dword [ebp - 0x38], 3
mov ebx, dword [ebp - 0x20]
ja 0x4107ef
mov dword [ebp - 0x24], esi
cmp eax, 3
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x34], 0x270
jg 0x410685
mov eax, dword [ebp - 0xa8]
shl eax, 6
neg eax
mov ecx, 0x1b0
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, 6
mov ecx, 1
mov edx, 0xfffffffa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x34]
neg esi
mov eax, ecx
sub eax, esi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x24]
cmp eax, 0xffffff
ja 0x410700
mov dword [ebp - 0x28], ecx
shl eax, 8
shl edi, 8
movzx esi, byte [ebx]
inc ebx
mov dword [ebp - 0x20], ebx
mov ebx, edi
mov edi, esi
not edi
mov ecx, ebx
not ecx
and edi, 0xe2426568
and esi, 0x97
and ecx, 0xe2426568
and ebx, 0x1dbd9a00
add esi, edi
add ebx, ecx
xor ebx, esi
mov edx, eax
jmp 0x41070a
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x20], ebx
mov edx, eax
mov ebx, edi
mov esi, edx
shr esi, 0xb
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
movzx edi, word [eax + ecx*2]
imul esi, edi
cmp ebx, esi
jae 0x410740
mov dword [ebp - 0x24], esi
mov ecx, 0x800
sub ecx, edi
neg edi
shr ecx, 5
sub ecx, edi
mov edx, dword [ebp - 0x14]
mov word [eax + edx*2], cx
mov ecx, dword [ebp - 0x28]
add ecx, ecx
jmp 0x410789
mov ecx, edi
shr ecx, 5
sub edi, ecx
mov ecx, dword [ebp - 0x14]
mov word [eax + ecx*2], di
add edx, 0x94183f12
sub edx, esi
add ebx, 0x134d1ec6
sub ebx, esi
mov ecx, dword [ebp - 0x28]
add ecx, ecx
mov eax, ecx
not eax
and eax, 0x2f3a463d
and ecx, 0xd0c5b9c2
add ecx, eax
add edx, 0x6be7c0ee
add ebx, 0xecb2e13a
xor ecx, 0x2f3a463c
mov dword [ebp - 0x24], edx
mov edi, ebx
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x2c]
dec eax
inc edx
mov ebx, dword [ebp - 0x20]
jne 0x4106a0
lea eax, [ecx - 0x40]
cmp eax, 4
jl 0x4107fd
mov dword [ebp - 0x28], ecx
mov edx, eax
sar edx, 1
mov ecx, edx
neg ecx
mov esi, eax
or esi, 2
and esi, 3
cmp eax, 0xd
jg 0x41080b
not ecx
shl esi, cl
mov eax, 0xfad36bf7
sub eax, dword [ebp - 0x28]
mov edx, 0xfad36bb7
sub edx, eax
mov eax, 0x2af
sub eax, edx
mov edx, esi
neg edx
sub edx, eax
neg edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x90], esi
mov eax, dword [ebp - 0x24]
jmp 0x4108b3
mov dword [ebp - 0x24], esi
mov dword [ebp - 0xa8], eax
jmp 0x4109d9
mov dword [ebp - 0x90], eax
mov edx, dword [ebp - 0x24]
jmp 0x4109c0
mov eax, 0xfffffffb
sub eax, ecx
mov ecx, 5
sub ecx, edx
mov edx, esi
nop
nop
nop
nop
nop
mov ebx, edx
mov esi, dword [ebp - 0x24]
cmp esi, 0xffffff
ja 0x410845
shl esi, 8
mov dword [ebp - 0x24], esi
shl edi, 8
mov edx, dword [ebp - 0x20]
movzx esi, byte [edx]
inc edx
mov dword [ebp - 0x20], edx
add edi, esi
mov esi, dword [ebp - 0x24]
mov edx, ebx
shr esi, 1
add edx, edx
cmp edi, esi
jae 0x410860
mov dword [ebp - 0x24], esi
mov ebx, edi
jmp 0x410892
add edi, 0x69f79781
sub edi, esi
mov dword [ebp - 0x24], esi
add edi, 0x9608687f
mov ebx, edi
mov esi, edx
not esi
and esi, 0xa6214e18
mov edi, edx
and edi, 0x59deb1e7
add edi, esi
xor edi, 0xa6214e19
and edx, 1
or edx, edi
dec eax
inc ecx
mov edi, ebx
jne 0x410820
shl edx, 4
mov ecx, 4
mov dword [ebp - 0x30], 0x322
mov dword [ebp - 0x90], edx
mov eax, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x20]
mov esi, 1
mov dword [ebp - 0x14], 1
nop
mov dword [ebp - 0x28], esi
mov esi, dword [ebp - 0x30]
neg esi
mov edx, dword [ebp - 0x14]
sub edx, esi
cmp eax, 0xffffff
ja 0x410920
mov dword [ebp - 0x24], ecx
shl eax, 8
shl edi, 8
movzx esi, byte [ebx]
inc ebx
mov dword [ebp - 0x20], ebx
mov ecx, edi
mov edi, esi
not edi
mov ebx, edx
mov edx, ecx
not edx
and edi, 0x18af4829
and esi, 0xd6
and edx, 0x18af4829
and ecx, 0xe750b700
add esi, edi
mov edi, ecx
add edi, edx
mov edx, ebx
xor edi, esi
jmp 0x410926
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], ebx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], edx
mov ebx, eax
shr ebx, 0xb
movzx esi, word [ecx + edx*2]
imul ebx, esi
mov edx, edi
sub edi, ebx
jae 0x410970
mov eax, 0x800
sub eax, esi
shr eax, 5
add eax, esi
mov esi, dword [ebp - 0x2c]
mov word [ecx + esi*2], ax
mov eax, dword [ebp - 0x14]
add eax, eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x20]
mov edi, edx
mov edx, ebx
mov ebx, eax
mov esi, dword [ebp - 0x28]
jmp 0x4109b2
mov edx, esi
shr edx, 5
add esi, 0x7d1a
sub esi, edx
add esi, 0xffff82e6
mov edx, dword [ebp - 0x2c]
mov word [ecx + edx*2], si
sub eax, ebx
mov esi, dword [ebp - 0x28]
mov edx, esi
mov ecx, dword [ebp - 0x90]
and edx, ecx
xor ecx, esi
or ecx, edx
mov dword [ebp - 0x90], ecx
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx + ecx + 1]
mov dword [ebp - 0x14], ecx
mov edx, eax
mov ebx, dword [ebp - 0x20]
add esi, esi
mov ecx, dword [ebp - 0x24]
dec ecx
mov eax, edx
jne 0x4108c0
add dword [ebp - 0x38], 7
inc dword [ebp - 0x90]
je 0x410ef2
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x14], edi
mov eax, 1
mov ecx, dword [ebp - 0x90]
cmp ecx, dword [ebp - 0x88]
ja 0x410ee7
mov esi, dword [ebp - 0xa8]
add esi, 2
mov edx, dword [ebp - 0x9c]
mov eax, edx
mov ecx, dword [ebp - 0x88]
sub eax, ecx
cmp eax, esi
mov ebx, dword [ebp - 0x84]
ja 0x410a21
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0x88], edx
jmp 0x410a2f
add ecx, esi
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0x88], ecx
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp + 0x18]
lea eax, [eax + ebx]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x3c]
lea eax, [eax + ecx + 1]
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x2c], eax
xor esi, esi
mov edi, ebx
mov eax, dword [ebp - 0x80]
nop
mov dword [ebp - 0x80], eax
lea eax, [eax - 0x35f3ea70]
sub eax, dword [ebp - 0x90]
lea ecx, [eax + 0x35f3ea70]
mov ebx, dword [ebp - 0x9c]
cmp ecx, ebx
mov ecx, 0
jb 0x410a76
mov ecx, ebx
mov edx, 0xca0c1590
sub edx, eax
sub ecx, edx
mov eax, dword [ebp - 0x8c]
mov dl, byte [eax + ecx]
mov ecx, dword [ebp - 0x80]
mov byte [eax + ecx], dl
mov eax, ecx
inc eax
cmp eax, ebx
mov ecx, 0
je 0x410a9c
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [eax + esi], dl
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x2c], esi
mov edx, dword [ebp - 0x84]
je 0x410ad2
dec dword [ebp - 0xa8]
neg edi
mov eax, 1
sub eax, edi
lea edx, [edx + esi + 1]
inc esi
cmp edx, dword [ebp + 0x1c]
mov edi, eax
mov eax, ecx
jb 0x410a50
jmp 0x40f720
lea edx, [edx + esi + 1]
mov dword [ebp - 0xa8], 0
jmp 0x40f720
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0xd8]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0x7c], eax
mov edx, dword [ebp - 0x24]
cmp edx, 0xffffff
ja 0x410b1e
shl edx, 8
mov dword [ebp - 0x24], edx
shl edi, 8
mov ecx, dword [ebp - 0x20]
movzx eax, byte [ecx]
inc ecx
add edi, eax
mov edx, edi
jmp 0x410b26
mov dword [ebp - 0x24], edx
mov edx, edi
mov ecx, dword [ebp - 0x20]
lea esi, [ebx + 0x64e9049a]
sub esi, ecx
add esi, 0x9b16fb66
mov eax, dword [ebp - 0x94]
neg eax
sub esi, eax
mov eax, 1
js 0x410ee7
test esi, esi
mov dword [ebp - 0x9c], esi
mov edi, ebx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x94]
mov esi, ecx
jle 0x410e6a
lea ecx, [ebx + edi - 1]
sub ecx, esi
xor eax, eax
cmp ecx, 0xffffffff
je 0x410e4e
lea ecx, [ebx + edi - 0x6299acf3]
sub ecx, esi
add ecx, 0x6299acf3
mov edx, ecx
xor edx, 0x1f
xor eax, eax
and edx, ecx
je 0x410e32
mov dword [ebp - 0x8c], edx
mov edx, edi
mov dword [ebp - 0x98], edi
neg edx
sub edx, ebx
neg edx
mov dword [ebp - 0xa0], ecx
mov ecx, dword [ebp + 8]
lea edi, [ecx + 0x18]
mov dword [ebp - 0x1c], edi
lea ebx, [edx - 1]
mov dword [ebp - 0x28], ebx
cmp edi, ebx
setbe byte [ebp - 0x18]
neg edx
mov ebx, esi
mov dword [ebp - 0x20], ebx
mov edi, 0xb9cb60de
sub edi, edx
sub edi, ebx
lea esi, [edi + ecx + 0x46349f39]
mov ecx, dword [ebp - 0xa0]
mov edx, ebx
cmp edx, esi
setbe bh
xor bh, byte [ebp - 0x18]
jne 0x410bf7
mov edx, dword [ebp - 0x28]
cmp dword [ebp - 0x1c], edx
jbe 0x410e3b
xor esi, esi
mov eax, 0xffffffff
mov ecx, dword [ebp + 8]
mov edi, dword [ebp - 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x18], eax
mov dl, byte [edi + esi]
mov byte [ebp - 0x1c], dl
mov dl, byte [edi + esi + 1]
mov byte [ebp - 0x28], dl
mov dl, byte [edi + esi + 2]
mov byte [ebp - 0x2c], dl
mov dl, byte [edi + esi + 3]
mov byte [ebp - 0x30], dl
mov dl, byte [edi + esi + 4]
mov byte [ebp - 0x34], dl
mov dl, byte [edi + esi + 5]
mov byte [ebp - 0x3c], dl
mov dl, byte [edi + esi + 6]
mov byte [ebp - 0x40], dl
mov dl, byte [edi + esi + 7]
mov byte [ebp - 0x44], dl
mov dword [ebp - 0x48], eax
mov eax, esi
mov ebx, dword [ebp - 0x18]
mov dword [ebp - 0x50], ebx
mov ebx, esi
mov dl, byte [edi + esi + 8]
mov byte [ebp - 0x68], dl
mov dl, byte [edi + esi + 9]
mov byte [ebp - 0x6a], dl
mov dl, byte [edi + esi + 0xa]
mov byte [ebp - 0x6c], dl
mov dl, byte [edi + esi + 0xb]
mov byte [ebp - 0x6e], dl
mov dl, byte [edi + esi + 0xc]
mov byte [ebp - 0x70], dl
mov dl, byte [edi + esi + 0xd]
mov byte [ebp - 0x72], dl
mov dl, byte [edi + esi + 0xe]
mov byte [ebp - 0x74], dl
mov edx, dword [ebp - 0x48]
and edx, 0x65314a9c
and eax, 0x9aceb563
add eax, edx
mov edx, dword [ebp - 0x18]
not edx
xor eax, 0x65314a8c
and edx, 0x10
mov dword [ebp - 0x60], edx
or eax, edx
mov dl, byte [edi + eax]
mov byte [ebp - 0x48], dl
mov dl, byte [edi + eax + 1]
mov byte [ebp - 0x49], dl
mov dl, byte [edi + eax + 2]
mov byte [ebp - 0x51], dl
mov dl, byte [edi + eax + 3]
mov byte [ebp - 0x58], dl
mov dl, byte [edi + eax + 4]
mov byte [ebp - 0x59], dl
mov dl, byte [edi + eax + 5]
mov byte [ebp - 0x5a], dl
mov dl, byte [edi + eax + 6]
mov byte [ebp - 0x5b], dl
mov dl, byte [edi + eax + 7]
mov byte [ebp - 0x5c], dl
mov dl, byte [edi + eax + 8]
mov byte [ebp - 0x61], dl
mov dl, byte [edi + eax + 9]
mov byte [ebp - 0x69], dl
mov dl, byte [edi + eax + 0xa]
mov byte [ebp - 0x6b], dl
mov dl, byte [edi + eax + 0xb]
mov byte [ebp - 0x6d], dl
mov dl, byte [edi + eax + 0xc]
mov byte [ebp - 0x6f], dl
mov dl, byte [edi + eax + 0xd]
mov byte [ebp - 0x71], dl
mov dl, byte [edi + eax + 0xe]
mov byte [ebp - 0x73], dl
mov al, byte [edi + eax + 0xf]
mov ah, byte [edi + esi + 0xf]
mov byte [ecx + esi + 0x27], ah
mov dl, byte [ebp - 0x74]
mov byte [ecx + esi + 0x26], dl
mov dl, byte [ebp - 0x72]
mov byte [ecx + esi + 0x25], dl
mov dl, byte [ebp - 0x70]
mov byte [ecx + esi + 0x24], dl
mov dl, byte [ebp - 0x6e]
mov byte [ecx + esi + 0x23], dl
mov dl, byte [ebp - 0x6c]
mov byte [ecx + esi + 0x22], dl
mov dl, byte [ebp - 0x6a]
mov byte [ecx + esi + 0x21], dl
mov dl, byte [ebp - 0x68]
mov byte [ecx + esi + 0x20], dl
mov ah, byte [ebp - 0x44]
mov byte [ecx + esi + 0x1f], ah
mov ah, byte [ebp - 0x40]
mov byte [ecx + esi + 0x1e], ah
mov ah, byte [ebp - 0x3c]
mov byte [ecx + esi + 0x1d], ah
mov ah, byte [ebp - 0x34]
mov byte [ecx + esi + 0x1c], ah
mov ah, byte [ebp - 0x30]
mov byte [ecx + esi + 0x1b], ah
mov ah, byte [ebp - 0x2c]
mov byte [ecx + esi + 0x1a], ah
mov ah, byte [ebp - 0x28]
mov byte [ecx + esi + 0x19], ah
mov ah, byte [ebp - 0x1c]
mov byte [ecx + esi + 0x18], ah
mov edx, dword [ebp - 0x50]
and edx, 0x4a26944e
and ebx, 0xb5d96bb1
add ebx, edx
xor ebx, 0x4a26945e
or ebx, dword [ebp - 0x60]
mov byte [ecx + ebx + 0x27], al
mov eax, dword [ebp - 0x18]
mov dl, byte [ebp - 0x73]
mov byte [ecx + ebx + 0x26], dl
mov dl, byte [ebp - 0x71]
mov byte [ecx + ebx + 0x25], dl
mov dl, byte [ebp - 0x6f]
mov byte [ecx + ebx + 0x24], dl
mov dl, byte [ebp - 0x6d]
mov byte [ecx + ebx + 0x23], dl
mov dl, byte [ebp - 0x6b]
mov byte [ecx + ebx + 0x22], dl
mov dl, byte [ebp - 0x69]
mov byte [ecx + ebx + 0x21], dl
mov dl, byte [ebp - 0x61]
mov byte [ecx + ebx + 0x20], dl
mov dl, byte [ebp - 0x5c]
mov byte [ecx + ebx + 0x1f], dl
mov dl, byte [ebp - 0x5b]
mov byte [ecx + ebx + 0x1e], dl
mov dl, byte [ebp - 0x5a]
mov byte [ecx + ebx + 0x1d], dl
mov dl, byte [ebp - 0x59]
mov byte [ecx + ebx + 0x1c], dl
mov dl, byte [ebp - 0x58]
mov byte [ecx + ebx + 0x1b], dl
mov dl, byte [ebp - 0x51]
mov byte [ecx + ebx + 0x1a], dl
mov dl, byte [ebp - 0x49]
mov byte [ecx + ebx + 0x19], dl
mov dl, byte [ebp - 0x48]
mov byte [ecx + ebx + 0x18], dl
mov edx, dword [ebp - 0x8c]
add esi, 0x20
add eax, 0xffffffe0
cmp edx, esi
jne 0x410c10
mov dword [ebp - 0x20], edi
mov eax, edx
mov ecx, dword [ebp - 0xa0]
jmp 0x410e3b
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x98], edi
cmp ecx, eax
mov ebx, dword [ebp - 0x94]
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x20]
je 0x410e6a
add ebx, edi
sub ebx, eax
sub ebx, esi
mov ecx, dword [ebp + 8]
lea ecx, [eax + ecx + 0x18]
add esi, eax
nop
nop
nop
mov dl, byte [esi]
mov byte [ecx], dl
inc eax
inc ecx
inc esi
dec ebx
jne 0x410e60
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [ebp - 0x9c]
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 - 0x80]
mov dword [ecx + 0x64], eax
mov eax, dword [ebp - 0xac]
mov edx, dword [ebp - 0x84]
add eax, edx
mov dword [ecx + 0x68], eax
mov eax, dword [ebp - 0x88]
mov dword [ecx + 0x6c], eax
mov eax, dword [ebp - 0x90]
mov dword [ecx + 0x70], eax
mov eax, dword [ebp - 0x78]
mov dword [ecx + 0x74], eax
mov eax, dword [ebp - 0x7c]
mov dword [ecx + 0x78], eax
mov eax, dword [ebp - 0xe0]
mov dword [ecx + 0x7c], eax
mov eax, dword [ebp - 0x38]
mov dword [ecx + 0x80], eax
mov eax, dword [ebp - 0xa8]
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, 0xec
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0xa8], 0xffffffff
mov dword [ebp - 0x90], 0
mov ebx, dword [ebp - 0x98]
jmp 0x410b00