Function at 0x402fef
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c6f0f
call fcn.004c6ae8
sub esp, 0xdc
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x34], edx
mov edi, ecx
mov dword [ebp - 0x50], 0xd41e5596
push 3
lea ecx, [ebp - 0xcc]
call fcn.0043852b
mov dword [ebp - 0x1c], 0x897
xor esi, esi
inc esi
push esi
lea ecx, [ebp - 0xb4]
call fcn.0043852b
mov dword [ebp - 0x24], 0xb4c8f0d0
xor ebx, ebx
mov dword [ebp - 0x14], ebx
jmp 0x403055
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xcc]
mov dword [eax + ecx*4], 0xc2039807
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x403042
mov dword [ebp - 0x14], ebx
jmp 0x403073
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xb4]
mov dword [eax + ecx*4], 0xa97963ba
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x403060
inc dword [ebp - 0x1c]
inc dword [ebp - 0x24]
lea ecx, [ebp - 0xb4]
call fcn.004385fd
lea ecx, [ebp - 0xcc]
call fcn.004385fd
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x14], 0xc3099cf
push 2
pop edi
push edi
lea ecx, [ebp - 0x60]
call fcn.0043852b
mov dword [ebp - 0x20], 0xfffffff7
mov dword [ebp - 0x14], ebx
jmp 0x4030c0
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x28], esi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x4030b6
mov dword [ebp - 0x14], ebx
jmp 0x4030da
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], 0x1f7d9671
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x4030ca
mov dword [ebp - 0x28], 0xffffffec
jmp 0x40311e
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], bl
je 0x40311b
push 0x1cc8
push ebx
push 0x5e5
push 0x1227
push 0x26a0
push ebx
push 0xf3f
push 0xb90
push 0x1f5b
call dword [0xade468]
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 0xffffffed
je 0x4030e8
mov dword [ebp - 0x14], ebx
jmp 0x4031f8
push 4
lea ecx, [ebp - 0x6c]
call fcn.0043852b
mov dword [ebp - 0x20], ebx
jmp 0x403147
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x40313b
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov dword [ebp - 0x28], 3
mov eax, dword [ebp - 0x14]
neg eax
sbb eax, eax
neg eax
mov ecx, edi
sub ecx, eax
mov eax, dword [ebp - 0x60]
mov dword [eax], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x6c]
mov ecx, dword [eax + 8]
mov eax, dword [ebp - 0x60]
imul ecx, dword [eax]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x20], ebx
cmp dword [ebp - 0x20], 0xffffffe3
jle 0x4031ed
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x1c], 0x20f30385
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x28], 0x67f5d1cc
dec dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0xffffffe3
jg 0x4031a7
lea ecx, [ebp - 0x6c]
call fcn.004385fd
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jle 0x40312c
lea ecx, [ebp - 0x60]
call fcn.004385fd
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], ebx
jmp 0x403228
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0xe8], 0xdf99
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x403217
mov dword [ebp - 0x1c], 3
cmp dword [ebp - 0x1c], ebx
jl 0x40325a
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], bl
je 0x403255
push ebx
push ebx
push 0x45d
push 0x1576
push ebx
call dword [0xade4c8]
dec dword [ebp - 0x1c]
jns 0x40323a
mov eax, dword [ebp + 8]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x2c], 0x1a76a447
push esi
lea ecx, [ebp - 0x84]
call fcn.0043852b
mov dword [ebp - 0x14], ebx
jmp 0x40328d
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x40], 0xea75
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x40327f
mov dword [ebp - 0x14], ebx
jmp 0x4032aa
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0x5662b132
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x403297
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], bl
je 0x4032c5
push ebx
push ebx
push ebx
push 0x201e
call dword [0xade0a8]
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0x14], ebx
jl 0x40352a
mov dword [ebp - 0x1c], 0xd4ea6801
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], 0x716b
cmp dword [ebp - 0x20], 0x73f8
jle 0x40333c
mov edi, ebx
mov dword [ebp - 0x24], ebx
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
mov esi, ebx
mov eax, edi
cdq
idiv ecx
mov edi, edx
mov eax, esi
xor eax, edi
cdq
push edx
push eax
mov ecx, 0xadaa58
call fcn.00438300
inc esi
cmp esi, 0x137a
jl 0x4032fe
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x48ad
mov edi, dword [ebp - 0x24]
jl 0x4032f5
inc edi
mov dword [ebp - 0x24], edi
cmp edi, 0x51c0
jl 0x4032f0
xor esi, esi
inc esi
push 2
pop edi
push 4
lea ecx, [ebp - 0x9c]
call fcn.0043852b
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x20], 0x6e9f
jge 0x403364
mov edx, 0xabae3c
mov ecx, 0xadaa58
call fcn.0043ab89
or dword [ebp - 4], 0xffffffff
jmp 0x403396
mov dword [ebp - 0x30], 0xfffffff8
mov dword [ebp - 0x2c], 0xffff
mov dword [ebp - 0x20], ebx
jmp 0x4033bc
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x9c]
mov dword [eax + ecx*4], 0xfffe
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x4033a9
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0x1c], ebx
jl 0x4034bc
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x30], 0x32a831d2
mov dword [ebp - 0x24], 0x7216709e
mov dword [ebp - 0x20], esi
cmp dword [ebp - 0x20], ebx
jl 0x4034b0
mov edi, dword [ebp - 0x9c]
mov dword [ebp - 0x38], 0xfffffff8
push esi
lea ecx, [ebp - 0x90]
call fcn.0043852b
mov dword [ebp - 0x24], ebx
jmp 0x403420
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x90]
mov dword [eax + ecx*4], 3
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], esi
jl 0x40340d
mov dword [ebp - 0x30], 0xffffffff
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
xor edx, edx
cmp eax, ecx
setne dl
dec edx
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
sub ecx, eax
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
cmp eax, 0x7d77fc7d
setl cl
xor eax, eax
cmp ecx, 0xf3c5
setle al
cmp eax, 0xffff
jbe 0x40347c
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x14]
inc dword [edi + 4]
mov eax, dword [ebp - 0x30]
xor ecx, ecx
mov eax, dword [ebp - 0x90]
cmp dword [eax], esi
setne cl
mov dword [ebp - 0x38], ecx
lea ecx, [ebp - 0x90]
call fcn.004385fd
dec dword [ebp - 0x20]
jns 0x4033f5
dec dword [ebp - 0x1c]
jns 0x4033ce
push 2
pop edi
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x40]
xor ebx, ebx
test eax, eax
setne bl
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
cmp eax, 0xaf8e
setne cl
xor edx, edx
cmp ecx, 3
setg dl
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x40]
xor ecx, ecx
cmp eax, edx
setg cl
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x2c]
xor edx, edx
cmp eax, ecx
setne dl
imul edx, ebx
mov eax, dword [ebp - 0x84]
mov dword [eax], edx
lea ecx, [ebp - 0x9c]
call fcn.004385fd
dec dword [ebp - 0x14]
xor ebx, ebx
jmp 0x4032c8
lea ecx, [ebp - 0x84]
call fcn.004385fd
mov dword [ebp - 0x1c], 0x256915a
mov dword [ebp - 0x1c], ebx
jmp 0x40354b
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x4c], ebx
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jl 0x403541
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x403561
push ebx
push ebx
call dword [0xade314]
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x4035cb
mov edi, dword [0xade0f8]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], ebx
jl 0x403588
mov eax, dword [ebp - 0x14]
cmp dword [ebp + eax*4 - 0x4c], ebx
jne 0x403588
dec dword [ebp - 0x14]
jns 0x40357a
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], ebx
jl 0x4035c3
mov dword [ebp - 0x24], 0xfffffffa
mov dword [ebp - 0x24], ebx
cmp dword [ebp - 0x24], ebx
jl 0x4035ad
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + eax*4 - 0x4c], ebx
jne 0x4035ad
dec dword [ebp - 0x24]
jns 0x40359f
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x4035be
push ebx
push 0x1f7c
call edi
dec dword [ebp - 0x14]
jns 0x403590
dec dword [ebp - 0x1c]
jns 0x40356f
push 2
pop edi
mov dword [ebp - 0x1c], 0x256915a
mov dword [ebp - 0x1c], ebx
jmp 0x4035e1
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x48], ebx
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jl 0x4035d7
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x4035f7
push ebx
push ebx
call dword [0xade314]
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x403661
mov edi, dword [0xade0f8]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], ebx
jl 0x40361e
mov eax, dword [ebp - 0x14]
cmp dword [ebp + eax*4 - 0x48], ebx
jne 0x40361e
dec dword [ebp - 0x14]
jns 0x403610
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], ebx
jl 0x403659
mov dword [ebp - 0x24], 0xfffffffa
mov dword [ebp - 0x24], ebx
cmp dword [ebp - 0x24], ebx
jl 0x403643
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + eax*4 - 0x48], ebx
jne 0x403643
dec dword [ebp - 0x24]
jns 0x403635
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x403654
push ebx
push 0x1f7c
call edi
dec dword [ebp - 0x14]
jns 0x403626
dec dword [ebp - 0x1c]
jns 0x403605
push 2
pop edi
mov dword [ebp - 0x1c], 0x4c405b40
mov dword [ebp - 0x24], 0x7ab1
cmp dword [ebp - 0x24], 0x7b39
jle 0x40370b
push 0x18b8
push ebx
call dword [0xade328]
mov edi, ebx
mov dword [ebp - 0x30], ebx
mov ecx, ebx
mov dword [ebp - 0x38], ebx
mov esi, ebx
mov dword [ebp - 0x2c], esi
mov eax, edi
cdq
idiv ecx
mov eax, edx
mov dword [ebp - 0x20], eax
mov edi, ebx
cdq
idiv esi
mov esi, edx
mov eax, esi
mov ecx, edi
shl eax, cl
cdq
push edx
push eax
mov ecx, 0xadaa58
call fcn.00438300
inc edi
cmp edi, 0x1510
jl 0x4036a8
mov esi, dword [ebp - 0x2c]
inc esi
mov dword [ebp - 0x2c], esi
cmp esi, 0x33b0
mov eax, dword [ebp - 0x20]
jl 0x4036a1
mov ecx, dword [ebp - 0x38]
inc ecx
mov dword [ebp - 0x38], ecx
cmp ecx, 0x54c8
mov edi, dword [ebp - 0x30]
jl 0x403692
inc edi
mov dword [ebp - 0x30], edi
cmp edi, 0x6e84
jl 0x40368d
push 0x5c7
push 0xa92
push ebx
call dword [0xade09c]
xor esi, esi
inc esi
push 2
pop edi
push 3
lea ecx, [ebp - 0xa8]
call fcn.0043852b
mov dword [ebp - 4], edi
cmp dword [ebp - 0x24], 0x772a
jge 0x403733
mov edx, 0xabae94
mov ecx, 0xadaa58
call fcn.0043ab89
or dword [ebp - 4], 0xffffffff
jmp 0x403765
push edi
lea ecx, [ebp - 0x78]
call fcn.0043852b
push edi
lea ecx, [ebp - 0xc0]
call fcn.0043852b
mov dword [ebp - 0x14], ebx
jmp 0x40378d
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x44], 0x7b8f5f49
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x40377f
mov dword [ebp - 0x14], ebx
push 3
pop edx
jmp 0x4037ab
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xd8], 4
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edx
jl 0x40379a
mov dword [ebp - 0x14], ebx
jmp 0x4037c8
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xa8]
mov dword [eax + ecx*4], 0xc1d10227
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edx
jl 0x4037b5
mov dword [ebp - 0x14], ebx
jmp 0x4037e2
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x78]
mov dword [eax + ecx*4], 0x2b5f7919
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x4037d2
mov dword [ebp - 0x14], ebx
jmp 0x4037fb
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc0]
mov dword [eax + ecx*4], esi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x4037ec
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x44], ebx
jne 0x403829
mov dword [ebp - 0xd0], 0xaee5a986
mov eax, dword [ebp - 0xa8]
mov dword [eax + 8], ebx
cmp dword [ebp - 0x44], ebx
jg 0x403829
mov eax, dword [ebp - 0x78]
cmp dword [eax], ebx
mov edx, ebx
je 0x40382b
mov edx, esi
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
mov eax, dword [ebp - 0x78]
imul ecx, dword [eax]
xor eax, eax
cmp ecx, 0x47941ce3
setg al
mov dword [ebp - 0x44], eax
lea ecx, [ebp - 0xc0]
call fcn.004385fd
lea ecx, [ebp - 0x78]
call fcn.004385fd
lea ecx, [ebp - 0xa8]
call fcn.004385fd
mov dword [ebp - 0x2c], 0x4df4
cmp dword [ebp - 0x2c], 0x50de
jle 0x4038c8
push 0x2289
push 0x17b6
call dword [0xade078]
mov esi, ebx
mov edi, ebx
mov ecx, ebx
mov dword [ebp - 0x34], ebx
mov eax, edi
sar eax, cl
xor eax, esi
cdq
push edx
push eax
mov ecx, 0xadaa58
call fcn.00438300
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
cmp ecx, 0x32cc
jl 0x403891
inc edi
cmp edi, 0x1ceb
jl 0x40388c
inc esi
cmp esi, 0x78f1
jl 0x40388a
xor esi, esi
inc esi
mov eax, dword [ebp + 8]
inc dword [eax]
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
dec dword [eax]
cmp edx, ecx
cmovne esi, ebx
mov eax, dword [ebp - 0x54]
mov dword [eax], esi
mov ecx, dword [ebp + 0x14]
mov dword [ecx], ebx
mov edx, dword [ebp + 0x18]
cmp dword [edx], ebx
jne 0x4038f1
mov eax, dword [ecx]
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [edx]
xor edx, edx
cmp ecx, eax
setle dl
sub edx, 3
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x50]
mov eax, dword [eax]
mov dword [eax], edx
mov dword [ebp - 4], 4
cmp dword [ebp - 0x2c], 0x4ac1
jge 0x403934
mov edx, 0xabaee0
mov ecx, 0xadaa58
call fcn.0043ab89
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret