Function at 0x4135d3
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
push ebx
push esi
push edi
mov dword [ebp - 0x38], 0x2f
movsx eax, byte [0x4164fc]
imul eax, dword [0x4164e0]
mov cl, byte [0x4164f4]
sub cl, al
mov byte [0x4164f4], cl
mov dword [ebp - 0x34], 0xfffffdf6
mov edx, dword [0x4164e8]
add edx, 0x128
mov al, byte [0x416504]
sub al, dl
mov byte [0x416504], al
mov dword [ebp - 0x24], 0x60
movsx ecx, byte [0x4164dc]
imul ecx, ecx, 0xfffffdbe
sub ecx, 0xaf
mov byte [0x416505], cl
mov dword [ebp - 8], 0xfffffd7d
movsx edx, byte [0x416506]
add edx, 0x27f
mov byte [0x416504], dl
mov byte [ebp - 0x18], 0x35
mov eax, 0xfffffeeb
sub eax, dword [0x416500]
mov ecx, dword [0x4164f0]
add ecx, eax
mov dword [0x4164f0], ecx
mov dword [ebp - 0x10], 0x2d6
mov edx, dword [0x4164e8]
sub edx, dword [0x4164e4]
movsx eax, byte [0x416505]
add edx, eax
mov cl, byte [0x4164fd]
add cl, dl
mov byte [0x4164fd], cl
mov dword [ebp - 0x28], 0xfffffc56
mov edx, 0xfffffdcb
sub edx, dword [0x416500]
mov byte [0x4164ec], dl
mov byte [ebp - 0x44], 0xf7
movsx eax, byte [0x416504]
sub eax, 0x220
mov cl, byte [0x416507]
add cl, al
mov byte [0x416507], cl
mov byte [ebp - 0x40], 0
movsx edx, byte [0x4164f5]
imul edx, edx, 0xfffffd08
movsx eax, byte [0x4164dc]
add eax, dword [0x4164f8]
add eax, edx
mov dword [0x4164f8], eax
mov dword [ebp - 4], 0xfffffd63
movsx ecx, byte [0x416504]
mov edx, 0xfffffd66
sub edx, ecx
mov eax, dword [0x4164e4]
lea ecx, [eax + edx + 0x2dd]
mov dword [0x4164e4], ecx
mov byte [ebp - 0x30], 0x73
movsx edx, byte [0x4164fd]
mov eax, dword [0x416508]
sub eax, edx
mov cl, byte [0x4164f5]
add cl, al
mov byte [0x4164f5], cl
mov byte [ebp - 0x14], 0x23
movsx edx, byte [0x4164f5]
movsx eax, byte [0x4164ec]
add edx, eax
mov ecx, dword [0x4164e4]
sub ecx, edx
mov dword [0x4164e4], ecx
mov dword [ebp - 0x4c], 0xffffffa7
movsx edx, byte [0x416506]
imul edx, dword [0x4164f8]
imul edx, dword [0x4164f8]
mov eax, dword [0x4164f8]
sub eax, edx
mov dword [0x4164f8], eax
mov ecx, dword [ebp - 0x4c]
imul ecx, ecx, 0x3f1
mov dl, byte [ebp - 0x14]
add dl, cl
mov byte [ebp - 0x14], dl
movsx eax, byte [ebp - 0x30]
imul eax, eax, 0xfffffdc0
mov dword [ebp - 4], eax
movsx ecx, byte [ebp - 0x40]
add ecx, 0x3c7
mov dl, byte [ebp - 0x44]
add dl, cl
mov byte [ebp - 0x44], dl
mov eax, 0xfffffcb6
sub eax, dword [ebp - 8]
add eax, dword [ebp - 4]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x24]
add ecx, 0x281
mov edx, dword [ebp - 0x4c]
sub edx, ecx
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x24]
imul eax, eax, 0x28b
mov ecx, dword [ebp - 4]
sub ecx, eax
mov byte [ebp - 0x40], cl
movsx edx, byte [ebp - 0x30]
mov eax, dword [ebp - 0x34]
lea ecx, [eax + edx + 0x193]
mov byte [ebp - 0x44], cl
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 4]
lea ecx, [eax + edx + 0xf9]
mov dl, byte [ebp - 0x40]
sub dl, cl
mov byte [ebp - 0x40], dl
movsx eax, byte [ebp - 0x40]
sub eax, 0x1c3
mov dword [ebp - 0x38], eax
movsx ecx, byte [ebp - 0x40]
imul ecx, ecx, 0xffffff11
imul ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x24]
sub edx, ecx
mov dword [ebp - 0x24], edx
movsx eax, byte [ebp - 0x44]
mov ecx, 0xffffff47
sub ecx, eax
mov dword [ebp - 0x4c], ecx
mov edx, 0x3a4
sub edx, dword [ebp - 0x38]
mov al, byte [ebp - 0x44]
add al, dl
mov byte [ebp - 0x44], al
mov dword [ebp - 0x1c], 0
movsx ecx, byte [ebp - 0x18]
mov edx, dword [ebp - 0x28]
imul edx, ecx
mov byte [ebp - 0x40], dl
movsx eax, byte [ebp - 0x14]
movsx ecx, byte [ebp - 0x30]
sub eax, ecx
mov byte [ebp - 0x18], al
movsx edx, byte [ebp - 0x18]
movsx eax, byte [ebp - 0x40]
sub edx, eax
add edx, 0x27d
mov cl, byte [ebp - 0x44]
add cl, dl
mov byte [ebp - 0x44], cl
movsx edx, byte [ebp - 0x30]
mov eax, dword [ebp - 0x4c]
imul eax, dword [ebp - 0x38]
sub edx, eax
mov cl, byte [ebp - 0x18]
sub cl, dl
mov byte [ebp - 0x18], cl
movsx edx, byte [ebp - 0x14]
imul edx, edx, 0xfffffcec
mov eax, dword [ebp - 0x28]
sub eax, edx
mov dword [ebp - 0x28], eax
mov byte [ebp - 0x18], 0xb3
mov ecx, dword [ebp - 0x4c]
add ecx, dword [ebp - 4]
mov dword [ebp - 4], ecx
movsx edx, byte [ebp - 0x30]
sub edx, 0x3db
mov eax, dword [ebp - 0x28]
sub eax, edx
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x28]
imul ecx, ecx, 0xfffffed3
mov edx, dword [ebp - 0x24]
sub edx, ecx
mov dword [ebp - 0x24], edx
mov eax, 0xfffffd4b
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 8]
add ecx, 0x51
mov dl, byte [ebp - 0x18]
add dl, cl
mov byte [ebp - 0x18], dl
mov eax, dword [ebp - 0x10]
imul eax, eax, 0xfffffe4a
mov ecx, dword [ebp - 0x4c]
add ecx, eax
mov dword [ebp - 0x4c], ecx
movsx edx, byte [ebp - 0x30]
mov eax, dword [ebp - 0x24]
imul eax, edx
mov ecx, 0xfffffea3
sub ecx, eax
mov edx, dword [ebp - 0x10]
add edx, ecx
mov dword [ebp - 0x10], edx
mov al, byte [ebp - 0x30]
sub al, 0xc8
mov byte [ebp - 0x30], al
movsx ecx, byte [ebp - 0x44]
sub ecx, 0x28e
movsx edx, byte [ebp - 0x18]
sub ecx, edx
mov eax, dword [ebp - 0x34]
sub eax, ecx
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x28]
add ecx, 0x73a0
mov dl, byte [ebp - 0x14]
add dl, cl
mov byte [ebp - 0x14], dl
mov eax, dword [ebp - 0x34]
sub eax, 0x30f
mov dword [ebp - 8], eax
movsx ecx, byte [ebp - 0x44]
imul ecx, ecx, 0xfffffc5e
mov dl, byte [ebp - 0x14]
sub dl, cl
mov byte [ebp - 0x14], dl
mov eax, 0x30
mov eax, dword fs:[eax]
mov dword [ebp - 0x2c], eax
mov eax, 0xfffffb06
sub eax, dword [ebp - 0x10]
mov cl, byte [ebp - 0x30]
add cl, al
mov byte [ebp - 0x30], cl
mov edx, 0xffffff18
sub edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
sub eax, edx
mov dword [ebp - 0x28], eax
movsx ecx, byte [ebp - 0x40]
movsx edx, byte [ebp - 0x40]
sub ecx, edx
mov dword [ebp - 0x38], ecx
movsx eax, byte [ebp - 0x44]
mov ecx, dword [ebp - 8]
lea edx, [eax + ecx - 0x1a1]
mov al, byte [ebp - 0x40]
add al, dl
mov byte [ebp - 0x40], al
movsx ecx, byte [ebp - 0x40]
mov edx, dword [ebp - 4]
imul edx, edx, 0xfffffde8
add ecx, edx
mov eax, dword [ebp - 0x38]
sub eax, ecx
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0xc]
add edx, 0x14
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x4c]
imul eax, dword [ebp - 4]
movsx ecx, byte [ebp - 0x30]
add eax, ecx
mov dl, byte [ebp - 0x18]
sub dl, al
mov byte [ebp - 0x18], dl
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x4c]
mov cl, byte [ebp - 0x40]
sub cl, al
mov byte [ebp - 0x40], cl
mov edx, dword [ebp - 0x28]
add edx, 0x49e
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
mov dword [ebp - 0x3c], ecx
movsx edx, byte [ebp - 0x44]
mov eax, 0xffffff72
sub eax, edx
sub eax, 0x33e
mov byte [ebp - 0x18], al
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0xfffffd2f
mov byte [ebp - 0x40], cl
movsx edx, byte [ebp - 0x30]
movsx eax, byte [ebp - 0x18]
imul edx, eax
mov cl, byte [ebp - 0x44]
add cl, dl
mov byte [ebp - 0x44], cl
movsx edx, byte [ebp - 0x14]
imul edx, edx, 0xfffffcde
mov eax, 0x1d8
sub eax, edx
mov byte [ebp - 0x30], al
movsx ecx, byte [ebp - 0x40]
imul ecx, dword [ebp - 0x4c]
movsx edx, byte [ebp - 0x44]
add ecx, edx
mov dword [ebp - 0x38], ecx
mov eax, 0xfffffc40
sub eax, dword [ebp - 0x34]
mov cl, byte [ebp - 0x14]
sub cl, al
mov byte [ebp - 0x14], cl
movsx edx, byte [ebp - 0x30]
add edx, 0xe1
mov dword [ebp - 0x38], edx
movsx eax, byte [ebp - 0x14]
sub eax, dword [ebp - 0x38]
mov cl, byte [ebp - 0x44]
add cl, al
mov byte [ebp - 0x44], cl
movsx edx, byte [ebp - 0x14]
sub edx, dword [ebp - 0x4c]
add edx, dword [ebp - 4]
mov al, byte [ebp - 0x30]
add al, dl
mov byte [ebp - 0x30], al
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x20], ecx
movsx edx, byte [ebp - 0x18]
mov eax, 0xfffffddb
sub eax, edx
mov ecx, dword [ebp - 8]
sub ecx, eax
mov dword [ebp - 8], ecx
movsx edx, byte [ebp - 0x44]
add edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x4c]
lea ecx, [edx + eax + 0x124]
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 8]
add edx, dword [ebp - 0x4c]
add edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x4c]
sub eax, edx
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x10]
lea eax, [edx + ecx - 0x125]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 8]
add ecx, 0x1b5
mov dl, byte [ebp - 0x40]
sub dl, cl
mov byte [ebp - 0x40], dl
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x28]
imul edx, dword [ebp - 0x34]
mov byte [ebp - 0x18], dl
movsx eax, byte [ebp - 0x30]
mov ecx, dword [ebp - 4]
add ecx, eax
sub ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 4]
sub edx, ecx
mov dword [ebp - 4], edx
movsx eax, byte [ebp - 0x14]
mov ecx, dword [ebp - 0x38]
add ecx, eax
movsx edx, byte [ebp - 0x40]
add ecx, edx
mov eax, dword [ebp - 0x10]
sub eax, ecx
mov dword [ebp - 0x10], eax
movsx ecx, byte [ebp - 0x44]
mov edx, dword [ebp - 0x24]
add edx, ecx
mov al, byte [ebp - 0x40]
sub al, dl
mov byte [ebp - 0x40], al
mov dword [ebp - 0xc], 0
mov ecx, dword [ebp - 0x28]
sub ecx, 0x960f3
mov dword [ebp - 0x28], ecx
movsx edx, byte [ebp - 0x14]
movsx eax, byte [ebp - 0x44]
add edx, eax
mov cl, byte [ebp - 0x14]
sub cl, dl
mov byte [ebp - 0x14], cl
mov edx, dword [ebp - 0x38]
imul edx, edx, 0x5c
add edx, 0x102
mov eax, dword [ebp - 0x24]
sub eax, edx
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x4c]
imul ecx, ecx, 0xffffff16
sub ecx, 0x29
mov byte [ebp - 0x44], cl
movsx edx, byte [ebp - 0x30]
add edx, dword [ebp - 4]
mov byte [ebp - 0x18], dl
mov eax, dword [ebp - 4]
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x38]
sub edx, 0x379
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x38]
imul eax, eax, 0x28c
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov edx, dword [ebp - 8]
add edx, ecx
mov dword [ebp - 8], edx
mov eax, dword [ebp - 0x24]
sub eax, 0x17b
mov ecx, dword [ebp - 0x24]
sub ecx, eax
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 4]
mov dword [ebp - 4], edx
mov eax, dword [ebp - 0xc]
shl eax, 3
mov ecx, dword [ebp - 0xc]
shr ecx, 0x1d
or eax, ecx
mov dword [ebp - 0xc], eax
movsx edx, byte [ebp - 0x44]
movsx eax, byte [ebp - 0x30]
add eax, dword [ebp - 0x24]
lea ecx, [eax + edx + 0xeb]
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x28]
imul edx, dword [ebp - 8]
mov al, byte [ebp - 0x30]
sub al, dl
mov byte [ebp - 0x30], al
movsx ecx, byte [ebp - 0x40]
mov edx, dword [ebp - 0x24]
add edx, ecx
mov byte [ebp - 0x18], dl
mov eax, dword [ebp - 0x4c]
sub eax, 0x668
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x28]
imul ecx, ecx, 0xfffffe81
imul ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x28]
sub edx, ecx
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x48]
xor ecx, ecx
mov cx, word [eax]
or ecx, 0x20
mov edx, dword [ebp - 0xc]
xor edx, ecx
mov dword [ebp - 0xc], edx
movsx eax, byte [ebp - 0x14]
mov ecx, 0xfffffcc5
sub ecx, eax
mov dl, byte [ebp - 0x44]
add dl, cl
mov byte [ebp - 0x44], dl
movsx eax, byte [ebp - 0x40]
mov ecx, dword [ebp - 0x4c]
sub ecx, eax
add ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x10]
add edx, ecx
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x28]
imul eax, dword [ebp - 0x4c]
add eax, dword [ebp - 0x34]
mov cl, byte [ebp - 0x30]
add cl, al
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x48]
add edx, 2
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x48]
xor ecx, ecx
mov cx, word [eax]
test ecx, ecx
jne 0x413baf
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
lea ecx, [eax + edx + 0x231]
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
sub edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x38]
add eax, edx
mov dword [ebp - 0x38], eax
movsx ecx, byte [ebp - 0x30]
movsx edx, byte [ebp - 0x30]
lea eax, [ecx + edx + 0x3c]
mov byte [ebp - 0x14], al
mov ecx, dword [ebp - 0xc]
xor ecx, 0x4752e9
mov dword [ebp - 0xc], ecx
movsx edx, byte [ebp - 0x18]
imul edx, edx, 0xfffffd2a
mov byte [ebp - 0x14], dl
mov eax, dword [ebp - 0x38]
imul eax, eax, 0x2a9
mov cl, byte [ebp - 0x40]
sub cl, al
mov byte [ebp - 0x40], cl
mov edx, dword [ebp - 8]
sub edx, 0x144
mov eax, dword [ebp - 0x24]
sub eax, edx
mov dword [ebp - 0x24], eax
movsx ecx, byte [ebp - 0x30]
sub ecx, dword [ebp - 0x38]
sub ecx, 0x85
mov edx, dword [ebp - 0x10]
sub edx, ecx
mov dword [ebp - 0x10], edx
movsx eax, byte [ebp - 0x14]
add eax, dword [ebp - 0x4c]
mov cl, byte [ebp - 0x18]
add cl, al
mov byte [ebp - 0x18], cl
mov edx, dword [ebp - 0xc]
cmp edx, dword [ebp + 8]
jne 0x413da9
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 8]
lea edx, [ecx + eax + 0x8f]
mov eax, dword [ebp - 8]
sub eax, edx
mov dword [ebp - 8], eax
movsx ecx, byte [ebp - 0x44]
imul ecx, ecx, 0xfffffcb9
mov edx, dword [ebp - 0x34]
add edx, ecx
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x34]
imul eax, dword [ebp - 0x10]
mov cl, byte [ebp - 0x44]
add cl, al
mov byte [ebp - 0x44], cl
mov edx, dword [ebp - 0x4c]
sub edx, 0x4c81e
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x24]
mov byte [ebp - 0x40], al
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x10]
jmp 0x413e6f
movsx edx, byte [ebp - 0x40]
add edx, 0x4aebc
mov al, byte [ebp - 0x40]
add al, dl
mov byte [ebp - 0x40], al
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0xfffffdef
mov byte [ebp - 0x30], cl
movsx edx, byte [ebp - 0x40]
imul edx, edx, 0xfffffceb
add edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
sub eax, edx
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ecx]
mov dword [ebp - 0x3c], edx
movsx eax, byte [ebp - 0x18]
mov ecx, dword [ebp - 4]
imul ecx, dword [ebp - 0x38]
sub eax, ecx
mov byte [ebp - 0x44], al
mov edx, dword [ebp - 0x10]
sub edx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
add eax, edx
mov dword [ebp - 8], eax
movsx ecx, byte [ebp - 0x18]
imul ecx, ecx, 0xffffffce
movsx edx, byte [ebp - 0x44]
imul ecx, edx
mov eax, dword [ebp - 0x24]
add eax, ecx
mov dword [ebp - 0x24], eax
movsx ecx, byte [ebp - 0x14]
mov edx, dword [ebp - 8]
add edx, ecx
mov al, byte [ebp - 0x30]
sub al, dl
mov byte [ebp - 0x30], al
mov ecx, dword [ebp - 0x3c]
cmp ecx, dword [ebp - 0x50]
jne 0x413a71
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x4c]
lea ecx, [eax + edx + 0x2ba]
mov edx, dword [ebp - 4]
sub edx, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x28], 0xfffffd06
mov eax, 0xfffffd10
sub eax, dword [ebp - 0x24]
mov cl, byte [ebp - 0x18]
sub cl, al
mov byte [ebp - 0x18], cl
mov edx, dword [ebp - 0x10]
sub edx, 0x2c3c4
mov dword [ebp - 0x34], edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret