Function at 0x5f1e90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff08
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0xf8], ebx
mov dword [ebp - 0xf4], ebx
mov dword [ebp - 0xf0], ebx
mov dword [ebp - 0xec], ebx
mov dword [ebp - 0xe4], ebx
mov dword [ebp - 0xe8], ebx
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xb8], ebx
mov dword [ebp - 0xbc], ebx
mov dword [ebp - 0xac], ecx
mov esi, edx
mov ebx, eax
lea eax, [ebp - 0xa8]
mov edx, dword [0x5ef46c]
call fcn.00404bd0
xor eax, eax
push ebp
push 0x5f2ac9
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xa8]
xor ecx, ecx
mov edx, 0xa8
call fcn.00402de8
mov dword [ebp - 0xd8], 0xffffffff
mov dword [ebp - 0xd4], 0xffffffff
mov dword [ebp - 0xe0], 0xffffffff
mov dword [ebp - 0xdc], 0xffffffff
mov dword [ebp - 0xa8], esi
cmp dword [ebp - 0xac], 0
je 0x5f1f66
mov eax, dword [ebp - 0xac]
cmp byte [eax + 0x52], 2
jne 0x5f1f66
mov dl, 1
mov eax, dword [0x67c338]
call fcn.00686024
mov dword [ebp - 0xa4], eax
jmp 0x5f1f72
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0xa4], eax
push 0x10000
mov eax, dword [0x767b94]
mov al, byte [eax]
push eax
mov ecx, ebx
mov dl, 1
mov eax, dword [0x67c894]
call fcn.0069aed8
mov dword [ebp - 0x70], eax
mov eax, dword [ebp + 0xc]
mov esi, eax
lea edi, [ebp - 0xa0]
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
mov eax, ebx
call fcn.004144d0
cdq
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
mov byte [ebp - 0x5f], 1
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x58], 1
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 0xbff00000
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0xbff00000
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 4], 0x3ff00000
mov cx, 1
mov edx, 0x80
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 0xc]
lea eax, [ebp - 0xb0]
mov edx, 4
call fcn.004044bc
lea eax, [ebp - 0xb0]
call fcn.00404358
mov edx, eax
mov ecx, 4
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 4]
mov eax, dword [ebp - 0xb0]
mov edx, 0x5f2ae4
call fcn.00404298
je 0x5f2055
mov cx, 1
mov edx, 0xffffff7c
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov byte [ebp - 0x60], 1
jmp 0x5f298c
mov byte [ebp - 0x60], 0
jmp 0x5f298c
lea eax, [ebp - 0xa8]
xor edx, edx
call fcn.005ef4c0
mov esi, eax
lea eax, [ebp - 0xa8]
xor edx, edx
call fcn.005ef4c0
mov word [ebp - 0xb2], ax
cmp si, 2
je 0x5f20a9
cmp byte [ebp - 0x5f], 0
jne 0x5f20a9
mov eax, esi
call fcn.0067d488
mov esi, eax
mov ax, word [ebp - 0xb2]
call fcn.0067d488
mov word [ebp - 0xb2], ax
lea eax, [ebp - 0xbc]
mov edx, 0x74cbcc
call fcn.0040412c
xor eax, eax
mov edx, 0x9f3
lea ebx, [edx + eax]
sar ebx, 1
jns 0x5f20ca
adc ebx, 0
cmp si, word [ebx*8 + 0x747c30]
ja 0x5f20ef
cmp si, word [ebx*8 + 0x747c30]
jne 0x5f20f4
mov cx, word [ebx*8 + 0x747c32]
cmp cx, word [ebp - 0xb2]
jae 0x5f20f4
lea eax, [ebx + 1]
jmp 0x5f20f7
mov edx, ebx
dec edx
cmp si, word [ebx*8 + 0x747c30]
jne 0x5f2112
mov cx, word [ebx*8 + 0x747c32]
cmp cx, word [ebp - 0xb2]
je 0x5f2116
cmp edx, eax
jge 0x5f20c0
cmp si, word [ebx*8 + 0x747c30]
jne 0x5f2143
mov ax, word [ebx*8 + 0x747c32]
cmp ax, word [ebp - 0xb2]
jne 0x5f2143
lea eax, [ebp - 0xbc]
lea edx, [ebx*8 + 0x747c34]
call fcn.0040412c
lea eax, [ebp - 0xb8]
mov edx, 2
call fcn.004044bc
lea eax, [ebp - 0xb8]
call fcn.00404358
mov edx, eax
mov ecx, 2
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 4]
cmp si, 2
je 0x5f219e
mov eax, dword [ebp - 0xb8]
mov al, byte [eax]
call fcn.005ef498
test al, al
je 0x5f2265
mov eax, dword [ebp - 0xb8]
mov al, byte [eax + 1]
call fcn.005ef498
test al, al
je 0x5f2265
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2af4
call fcn.00404298
jne 0x5f21c1
lea eax, [ebp - 0xbc]
mov edx, dword [ebp - 0xb8]
call fcn.00403f90
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b00
call fcn.00404298
jne 0x5f21ee
mov cx, 1
mov edx, 0xfffffffe
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edi, 4
jmp 0x5f227b
mov edi, 2
mov eax, dword [ebp - 0xb8]
mov edx, 0x5f2b0c
call fcn.00404298
je 0x5f224d
mov eax, dword [ebp - 0xb8]
mov edx, 0x5f2b18
call fcn.00404298
je 0x5f224d
mov eax, dword [ebp - 0xb8]
mov edx, 0x5f2b24
call fcn.00404298
je 0x5f224d
mov eax, dword [ebp - 0xb8]
mov edx, 0x5f2b30
call fcn.00404298
je 0x5f224d
mov eax, dword [ebp - 0xb8]
mov edx, 0x5f2b3c
call fcn.00404298
jne 0x5f227b
mov cx, 1
mov edx, 2
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edi, 4
jmp 0x5f227b
mov cx, 1
mov edx, 0xfffffffe
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edi, 4
xor ebx, ebx
cmp edi, 1
jne 0x5f2293
lea eax, [ebp - 0xa8]
call fcn.005ef4a8
xor ebx, ebx
mov bl, al
jmp 0x5f22de
cmp edi, 2
jne 0x5f22ba
cmp si, 2
je 0x5f22a4
cmp byte [ebp - 0x5f], 0
je 0x5f22a8
xor edx, edx
jmp 0x5f22aa
mov dl, 1
lea eax, [ebp - 0xa8]
call fcn.005ef4c0
movzx ebx, ax
jmp 0x5f22de
cmp edi, 4
jne 0x5f22de
cmp si, 2
je 0x5f22cb
cmp byte [ebp - 0x5f], 0
je 0x5f22cf
xor edx, edx
jmp 0x5f22d1
mov dl, 1
lea eax, [ebp - 0xa8]
call fcn.005ef4f0
mov ebx, eax
xor eax, eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xc4], 1
test ebx, ebx
jle 0x5f23a3
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b48
call fcn.00404298
je 0x5f231c
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b54
call fcn.00404298
jne 0x5f2328
mov dword [ebp - 0xc0], 2
jmp 0x5f2392
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b60
call fcn.00404298
je 0x5f235e
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b6c
call fcn.00404298
je 0x5f235e
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b78
call fcn.00404298
jne 0x5f236a
mov dword [ebp - 0xc0], 4
jmp 0x5f2392
mov eax, dword [ebp - 0xbc]
mov edx, 0x5f2b84
call fcn.00404298
je 0x5f2388
mov dword [ebp - 0xc0], 1
jmp 0x5f2392
mov dword [ebp - 0xc0], 8
mov eax, ebx
cdq
idiv dword [ebp - 0xc0]
mov dword [ebp - 0xc4], eax
jmp 0x5f23b7
test ebx, ebx
jge 0x5f23b7
xor eax, eax
mov dword [ebp - 0xc0], eax
xor eax, eax
mov dword [ebp - 0xc4], eax
cmp si, 0x7fe0
jne 0x5f246b
cmp word [ebp - 0xb2], 0x10
jne 0x5f246b
lea edx, [ebp - 0xce]
mov ecx, 2
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 4]
lea edx, [ebp - 0xd0]
mov ecx, 2
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 4]
mov cx, 1
mov edx, 0xfffffffc
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0xc]
cmp word [ebp - 0xce], 0xd8ff
jne 0x5f241d
cmp word [ebp - 0xd0], 0xe0ff
je 0x5f2433
cmp word [ebp - 0xce], 0xffd8
jne 0x5f244a
cmp word [ebp - 0xd0], 0xffe0
jne 0x5f244a
mov eax, dword [ebp - 0x70]
call fcn.004144b4
cdq
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], edx
jmp 0x5f246b
mov eax, dword [ebp - 0x70]
call fcn.004144b4
cdq
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xdc], edx
push ebp
call fcn.005f1e40
pop ecx
jmp 0x5f29ab
xor eax, eax
mov dword [ebp - 0xc8], eax
xor eax, eax
mov dword [ebp - 0xcc], eax
test ebx, ebx
jle 0x5f2587
mov eax, ebx
cdq
cmp edx, dword [ebp - 0x64]
jne 0x5f2496
cmp eax, dword [ebp - 0x68]
jae 0x5f2587
jmp 0x5f249c
jge 0x5f2587
cmp dword [ebp - 0xc4], 1
jne 0x5f2553
mov eax, dword [ebp - 0xc0]
dec eax
je 0x5f24bf
dec eax
je 0x5f24e6
sub eax, 2
je 0x5f251f
jmp 0x5f2553
lea eax, [ebp - 0xa8]
call fcn.005ef4a8
and eax, 0xff
mov dword [ebp - 0xcc], eax
mov cx, 1
or edx, 0xffffffff
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0xc]
jmp 0x5f2553
cmp si, 2
je 0x5f24f2
cmp byte [ebp - 0x5f], 0
je 0x5f24f6
xor edx, edx
jmp 0x5f24f8
mov dl, 1
lea eax, [ebp - 0xa8]
call fcn.005ef4c0
movzx eax, ax
mov dword [ebp - 0xcc], eax
mov cx, 1
mov edx, 0xfffffffe
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0xc]
jmp 0x5f2553
cmp si, 2
je 0x5f252b
cmp byte [ebp - 0x5f], 0
je 0x5f252f
xor edx, edx
jmp 0x5f2531
mov dl, 1
lea eax, [ebp - 0xa8]
call fcn.005ef4f0
mov dword [ebp - 0xcc], eax
mov cx, 1
mov edx, 0xfffffffc
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0xc]
lea eax, [ebx + 1]
call fcn.0040279c
mov dword [ebp - 0xc8], eax
mov edx, dword [ebp - 0xc8]
mov ecx, ebx
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 4]
mov eax, dword [ebp - 0xc0]
imul dword [ebp - 0xc4]
mov edx, dword [ebp - 0xc8]
mov byte [edx + eax], 0
mov eax, dword [ebp - 0xbc]
push eax
mov eax, dword [ebp - 0xc8]
push eax
push ebx
mov eax, dword [ebp - 0xa8]
mov eax, dword [eax + 0x14c]
mov cx, word [ebp - 0xb2]
mov edx, esi
call fcn.0069bfa4
sub si, 2
je 0x5f25c1
sub si, 0x26
je 0x5f25fc
jmp 0x5f298c
mov ax, word [ebp - 0xb2]
sub ax, 0x10
jne 0x5f298c
lea eax, [ebp - 0x5c]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0x5c]
mov edx, 0x5f2b90
call fcn.00404298
jne 0x5f298c
mov byte [ebp - 0x5f], 0
jmp 0x5f298c
movzx eax, word [ebp - 0xb2]
cmp eax, 0x103
jg 0x5f2664
je 0x5f27b9
cmp eax, 0x10
jg 0x5f2644
je 0x5f2721
sub eax, 2
je 0x5f26b8
sub eax, 2
je 0x5f26c6
sub eax, 2
je 0x5f26d9
sub eax, 2
je 0x5f26e7
jmp 0x5f298c
sub eax, 0x11
je 0x5f272f
sub eax, 0xef
je 0x5f273d
dec eax
je 0x5f277b
jmp 0x5f298c
cmp eax, 0x1201
jg 0x5f2696
je 0x5f2895
sub eax, 0x1050
je 0x5f27c7
dec eax
je 0x5f2811
dec eax
je 0x5f283d
dec eax
je 0x5f2869
jmp 0x5f298c
sub eax, 0x1202
je 0x5f28eb
dec eax
je 0x5f293a
sub eax, 0x1e03
je 0x5f2985
jmp 0x5f298c
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x58], eax
jmp 0x5f298c
lea eax, [ebp - 0x54]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
jmp 0x5f298c
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x50], eax
jmp 0x5f298c
lea eax, [ebp - 0xe8]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0xe8]
lea edx, [ebp - 0xe4]
call fcn.0069cb7c
mov eax, dword [ebp - 0xe4]
mov edx, 1
call fcn.0069cf40
mov dword [ebp - 0x4c], eax
jmp 0x5f298c
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x40], eax
jmp 0x5f298c
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x44], eax
jmp 0x5f298c
mov ebx, dword [ebp - 0xcc]
mov dword [ebp - 0x3c], ebx
mov ecx, 8
mov edx, ebx
mov eax, 1
call fcn.0067d15c
mov ebx, eax
mov edx, ebx
mov eax, dword [ebp - 0x34]
call fcn.006a0774
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x38], 0
jne 0x5f298c
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x38], eax
jmp 0x5f298c
mov ebx, dword [ebp - 0xcc]
mov dword [ebp - 0x38], ebx
mov ecx, 8
mov edx, ebx
mov eax, 1
call fcn.0067d15c
mov ebx, eax
mov edx, ebx
mov eax, dword [ebp - 0x34]
call fcn.006a0774
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x3c], 0
jne 0x5f298c
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
jmp 0x5f298c
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x48], eax
jmp 0x5f298c
push 0xbff00000
push 0
lea eax, [ebp - 0xec]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0xec]
call fcn.005f1cb4
fstp qword [ebp - 0x20]
wait
fld qword [ebp - 0x20]
fcomp dword [0x5f2ba4]
fnstsw ax
sahf
jne 0x5f298c
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 0xbff00000
jmp 0x5f298c
push 0xbff00000
push 0
lea eax, [ebp - 0xf0]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0xf0]
call fcn.005f1cb4
fstp qword [ebp - 0x18]
wait
jmp 0x5f298c
push 0xbff00000
push 0
lea eax, [ebp - 0xf4]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0xf4]
call fcn.005f1cb4
fstp qword [ebp - 0x10]
wait
jmp 0x5f298c
push 0xbff00000
push 0
lea eax, [ebp - 0xf8]
mov edx, dword [ebp - 0xc8]
call fcn.004040c0
mov eax, dword [ebp - 0xf8]
call fcn.005f1cb4
fstp qword [ebp - 8]
wait
jmp 0x5f298c
cmp dword [ebp - 0xc8], 0
je 0x5f298c
mov ecx, dword [ebp - 0x3c]
mov ebx, 1
shl ebx, cl
mov eax, ebx
add eax, eax
call fcn.0040279c
mov dword [ebp - 0x30], eax
mov esi, ebx
dec esi
test esi, esi
jl 0x5f298c
inc esi
xor ebx, ebx
mov eax, dword [ebp - 0xc8]
mov ax, word [eax + ebx*2]
mov dl, byte [ebp - 0x5f]
xor dl, 1
call fcn.0069ac98
mov edx, dword [ebp - 0x30]
mov word [edx + ebx*2], ax
inc ebx
dec esi
jne 0x5f28c6
jmp 0x5f298c
cmp dword [ebp - 0xc8], 0
je 0x5f298c
mov ecx, dword [ebp - 0x3c]
mov ebx, 1
shl ebx, cl
mov eax, ebx
add eax, eax
call fcn.0040279c
mov dword [ebp - 0x2c], eax
mov esi, ebx
dec esi
test esi, esi
jl 0x5f298c
inc esi
xor ebx, ebx
mov eax, dword [ebp - 0xc8]
mov ax, word [eax + ebx*2]
mov dl, byte [ebp - 0x5f]
xor dl, 1
call fcn.0069ac98
mov edx, dword [ebp - 0x2c]
mov word [edx + ebx*2], ax
inc ebx
dec esi
jne 0x5f2918
jmp 0x5f298c
cmp dword [ebp - 0xc8], 0
je 0x5f298c
mov ecx, dword [ebp - 0x3c]
mov ebx, 1
shl ebx, cl
mov eax, ebx
add eax, eax
call fcn.0040279c
mov dword [ebp - 0x28], eax
mov esi, ebx
dec esi
test esi, esi
jl 0x5f298c
inc esi
xor ebx, ebx
mov eax, dword [ebp - 0xc8]
mov ax, word [eax + ebx*2]
mov dl, byte [ebp - 0x5f]
xor dl, 1
call fcn.0069ac98
mov edx, dword [ebp - 0x28]
mov word [edx + ebx*2], ax
inc ebx
dec esi
jne 0x5f2963
jmp 0x5f298c
cmp dword [ebp - 0xc8], 0
mov eax, dword [ebp - 0x70]
call fcn.004144b4
cdq
cmp edx, dword [ebp - 0x64]
jne 0x5f29a5
cmp eax, dword [ebp - 0x68]
jb 0x5f205e
jmp 0x5f29ab
jl 0x5f205e
cmp dword [ebp - 0xdc], 0xffffffff
jne 0x5f29e8
cmp dword [ebp - 0xe0], 0xffffffff
jne 0x5f29e8
cmp dword [ebp - 0xd4], 0xffffffff
jne 0x5f29d1
cmp dword [ebp - 0xd8], 0xffffffff
jbe 0x5f29e8
jmp 0x5f29d3
jle 0x5f29e8
mov edx, dword [ebp - 0xd8]
mov eax, dword [ebp - 0x70]
call fcn.004144c4
push ebp
call fcn.005f1e40
pop ecx
mov ebx, dword [ebp - 0xa4]
cmp ebx, dword [ebp - 0xac]
je 0x5f2a39
mov eax, ebx
call fcn.0068745c
test al, al
jne 0x5f2a2e
mov eax, dword [ebp - 0xa4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 1
je 0x5f2a1d
mov dl, 5
mov eax, dword [ebp - 0xa4]
call fcn.006872fc
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebp - 0xac]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0xa4]
call fcn.00403170
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0xa8]
call fcn.0063efbc
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x5f2a53
call fcn.004027b4
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x5f2a5f
call fcn.004027b4
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x5f2a6b
call fcn.004027b4
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x5f2a77
call fcn.004027b4
mov eax, dword [ebp - 0x70]
call fcn.00403170
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5f2ad0
lea eax, [ebp - 0xf8]
mov edx, 6
call fcn.00403f1c
lea eax, [ebp - 0xbc]
mov edx, 2
call fcn.00403f1c
lea eax, [ebp - 0xb0]
call fcn.00403ef8
lea eax, [ebp - 0xa8]
mov edx, dword [0x5ef46c]
call fcn.00404c9c
ret