Function at 0x100045e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
mov eax, dword [0x1005f914]
mov dl, 0xbf
mov ecx, dword [0x1005f8ec]
inc eax
mov dword [0x1005f914], eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
push ebx
mov ebx, dword [0x1005f8d4]
push ebp
movzx eax, byte [eax + 0x173e]
sub ecx, eax
mov ebp, dword [0x1005f90c]
mov eax, dword [0x1005f900]
push esi
mov esi, dword [0x1005f910]
push edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], 0x1f1d
mov byte [esp + 0x12], dl
movzx ecx, byte [edi]
mov dword [esp + 0x2c], 0x478
mov byte [esp + 0x13], 0xf8
mov eax, dword [eax + ecx*8]
xor eax, 0x16f6
mov dword [esp + 0x14], eax
mov eax, dword [0x1005f8f0]
inc eax
mov dword [0x1005f8f0], eax
mov ecx, eax
xor eax, 0x121d
and ecx, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esi + ebx*4 + 0x20]
mov dword [esp + 0x20], eax
mov eax, ebp
imul eax, ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x30], eax
mov eax, dword [0x1005f924]
mov cx, word [eax + eax + 0x921]
inc eax
mov dword [0x1005f924], eax
mov eax, 0x3fd
cmp cx, ax
jae 0x100046a4
cmp ebp, dword [esi + 0x4780]
jne 0x100046cc
mov esi, dword [0x1005f904]
mov eax, dword [esp + 0x40]
cmp dword [eax + esi*8], 0x1ca1
jne 0x100046cc
cmp dword [esp + 0x1c], 0x478
je 0x100046cc
mov ebp, dword [0x1005f8dc]
jmp 0x10004783
mov eax, dword [esp + 0x44]
xor edx, edx
movzx ecx, word [esp + 0x54]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x28], 0x1f1e
mov eax, dword [eax + 0x4880]
sub eax, ecx
mov byte [esp + 0x12], 0xbe
div ebx
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
mov dword [0x1005f8f0], eax
mov eax, 0x3ce9
sub eax, dword [edx + 0x2f8]
mov dword [edx + 0x2f8], eax
mov eax, dword [0x1005f8dc]
sub eax, dword [ebx + 0x2f8]
mov dword [ebx + 0x2f8], eax
movzx eax, byte [edi]
lea eax, [eax + eax*2]
lea ecx, [edx + eax*4]
mov eax, dword [ebx + 0x783c]
xor dword [ecx], eax
mov eax, dword [0x1005f8d4]
mov cl, byte [0x1005f8ec]
xor cl, byte [0x1005f8dc]
add cl, byte [eax + esi]
mov eax, dword [esp + 0x48]
add byte [eax + 0x180], cl
mov ebp, dword [0x1005f8dc]
cmp dword [edx + 0x2f8], ebp
jae 0x10004779
movzx ecx, word [0x1005f920]
mov eax, dword [0x1005f910]
add ecx, ecx
cmp dword [eax + ecx*8], 0x278
jl 0x10004cf8
mov dl, byte [esp + 0x12]
mov esi, dword [0x1005f904]
movzx ecx, byte [edi]
mov ebx, dword [0x1005f8e4]
lea eax, [edi + ecx*2]
movzx eax, byte [ecx + eax]
cmp ebx, eax
jne 0x10004811
mov ecx, dword [esp + 0x30]
lea ebp, [ebx*2 + 0x931]
movzx eax, dl
lea eax, [ecx + eax*2]
mov dword [esp + 0x30], eax
movzx ecx, word [ebp]
lea ebp, [ebp + 2]
movzx eax, word [0x1005f920]
xor edx, edx
or eax, ebx
inc esi
sub eax, ecx
mov dword [0x1005f904], esi
div dword [0x1005f918]
mov eax, dword [0x1005f8d8]
lea esi, [eax + esi*2]
mov dword [0x1005f918], edx
mov eax, dword [esp + 0x30]
movzx ecx, byte [esi]
movzx eax, word [eax]
imul eax, ebx
imul eax, ebx
inc ebx
cdq
idiv ecx
mov byte [esi], al
movzx ecx, byte [edi]
lea eax, [edi + ecx*2]
movzx eax, byte [ecx + eax]
cmp ebx, eax
jne 0x1000480b
mov esi, dword [0x1005f904]
jmp 0x100047b0
mov ebp, dword [0x1005f8dc]
mov ecx, dword [esp + 0x48]
dec ebp
mov dword [0x1005f8dc], ebp
movzx eax, byte [edi]
add ecx, eax
mov bl, byte [esp + 0x12]
mov eax, dword [0x1005f908]
movzx eax, byte [eax + ebp]
cdq
idiv dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
sub al, byte [ecx]
add al, byte [0x1005f920]
mov byte [ecx], al
movzx ecx, word [0x1005f920]
movzx eax, bl
inc bl
mov ebp, dword [esp + 0x58]
lea esi, [eax*4]
mov eax, dword [0x1005f908]
movzx eax, byte [eax + 0x830]
or eax, ecx
movzx ecx, byte [edi]
movzx ecx, byte [edx + ecx*4]
cdq
idiv ecx
mov eax, edx
cdq
idiv dword [esp + 0x24]
imul eax, dword [esi + ebp]
mov dword [esi + ebp], eax
mov edx, dword [0x1005f904]
movzx eax, byte [0x1005f8e8]
lea ecx, [edx + edx*2]
cmp dword [ebp + ecx*4], eax
jne 0x10004973
movzx eax, byte [edi]
lea ecx, [eax*4]
mov eax, dword [0x1005f918]
shl eax, 4
mov eax, dword [eax + 0x1afd]
sub eax, dword [ecx + ebp]
mov dword [ecx + ebp], eax
inc byte [edi]
mov eax, dword [0x1005f904]
movzx ecx, byte [edi]
lea eax, [eax + eax*2]
lea edx, [eax*4]
mov eax, dword [0x1005f8e0]
movzx eax, word [eax + ecx*4 + 0x10]
mov ecx, dword [esp + 0x18]
and eax, 0xbe3
imul eax, dword [edx + ebp]
mov dword [edx + ebp], eax
mov eax, dword [0x1005f8d4]
add eax, eax
mov ecx, dword [ecx + eax*8]
mov eax, dword [0x1005f91c]
or ecx, dword [eax + 0x31ac]
movzx eax, bl
dec bl
movzx esi, bl
mov dword [esp + 0x1c], esi
add ecx, dword [ebp + eax*4]
mov eax, dword [0x1005f928]
and ecx, 0x5d9
sub ecx, dword [0x1005f914]
mov dword [0x1005f914], ecx
lea ecx, [eax + esi*2]
mov eax, dword [esp + 0x20]
mov al, byte [eax + 0x9cd]
add byte [ecx], al
mov eax, esi
mov ecx, dword [esp + 0x50]
add eax, eax
mov edx, dword [ecx + eax*8]
movzx ecx, byte [edi]
mov eax, dword [esp + 0x4c]
sub edx, dword [esp + 0x24]
xor edx, dword [eax + ecx*8]
mov eax, dword [0x1005f8dc]
mov ecx, dword [esp + 0x44]
xor dword [0x1005f90c], edx
lea ecx, [ecx + eax*4]
movzx eax, word [esp + 0x54]
add eax, 0x1b6d
xor eax, esi
imul eax, dword [ecx]
mov dword [ecx], eax
mov edx, dword [0x1005f904]
jmp 0x100049c5
cmp dword [esp + 0x34], 0x1ad0
jg 0x10004c8b
mov eax, dword [0x1005f8f0]
cmp eax, dword [0x6835]
jbe 0x10004c8b
movzx ecx, byte [edi]
mov esi, 0xef2
mov eax, dword [0x1005f8e0]
cmp word [eax + ecx*8], si
je 0x10004c8b
mov eax, dword [0x1005f910]
movzx esi, bl
mov dword [esp + 0x1c], esi
lea ecx, [esi + esi*2]
cmp dword [eax + ecx*4], 0x16b0
je 0x10004c8b
mov eax, dword [0x1005f8d8]
movzx ebx, byte [eax + esi*2]
cmp ebx, dword [0x1005f8d4]
je 0x10004a57
mov ecx, dword [esp + 0x40]
lea eax, [ebx + ebx*2]
mov edi, dword [esp + 0x44]
lea ebp, [ebx - 0x41c]
lea esi, [ecx + eax*4]
nop
mov al, byte [ebx*4 + 0x1894]
lea esi, [esi + 0xc]
xor al, bl
xor dword [esp + 0x14], ebx
and byte [esp + 0x13], al
mov eax, dword [0x1005f910]
mov eax, dword [eax + ebx*4]
add eax, 0xfa
cdq
idiv dword [esi - 0xc]
mov dword [esi - 0xc], edx
and dword [0x1005f8e4], ebp
inc ebp
mov edx, dword [edi + 0x49a4]
mov ecx, dword [0x1005f904]
and edx, ebx
mov eax, dword [0x1005f8f8]
inc ebx
mov dword [eax + ecx*4], edx
mov edx, dword [0x1005f904]
inc edx
mov dword [0x1005f904], edx
cmp ebx, dword [0x1005f8d4]
jne 0x100049f0
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x58]
mov eax, dword [0x1005f8ec]
mov ecx, dword [esp + 0x50]
mov bl, byte [esp + 0x13]
and dword [ecx + edx*4], eax
xor edx, edx
movzx eax, byte [edi]
lea eax, [eax + eax*2]
lea ecx, [eax*4]
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x3a74]
sub eax, dword [ecx + ebp]
mov dword [ecx + ebp], eax
mov eax, dword [0x1005f8e0]
movzx ecx, bl
mov word [eax + esi*2], cx
mov eax, dword [0x1005f91c]
mov ecx, dword [0x1005f924]
lea ecx, [eax + ecx*8]
mov eax, 0x199a
div dword [ecx]
mov dword [ecx], eax
mov ecx, dword [0x1005f904]
mov eax, dword [0x1005f90c]
inc ecx
mov dword [0x1005f904], ecx
mov dword [ebp + ecx*4], eax
mov eax, dword [esp + 0x28]
cmp dword [0x1005f8f4], eax
jbe 0x10004cf8
mov eax, 0x1691
cmp word [0x1005f920], ax
jae 0x10004cf8
movzx edx, byte [edi]
mov ebp, dword [esp + 0x40]
lea ecx, [edx + 2]
mov eax, ecx
add eax, eax
cmp dword [ebp + eax*8], 0xa0f
jne 0x10004b34
mov eax, dword [esi*4 + 0x1afd]
cmp eax, dword [0x1005f8e4]
jb 0x10004b34
mov eax, 0x9082f6b
mul dword [esp + 0x14]
mov eax, dword [0x1005f91c]
pop edi
pop esi
shr edx, 6
xor dx, word [eax + 0x57ec]
mov eax, 0xd75
pop ebp
mov word [0x1005f920], dx
pop ebx
add esp, 0x28
ret
mov eax, dword [0x1005f8dc]
movzx eax, byte [edi + eax*2]
cmp eax, 0xc25
ja 0x10004b5e
mov eax, dword [0x1005f908]
mov dword [esp + 0x2c], 0x477
movzx eax, byte [eax + 0x8f0]
cmp dword [esp + 0x14], eax
jne 0x10004b90
mov eax, dword [0x1005f900]
lea ecx, [ecx + ecx*2]
mov ebp, dword [esp + 0x44]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1005f8d4]
cmp ecx, dword [ebp + eax*4]
jne 0x10004b90
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
movzx eax, byte [eax + 0x1bd8]
cmp dword [ecx + edx*4], eax
ja 0x10004cf8
mov eax, 0x844
xor edx, edx
mov word [esi*4 + 0x921], ax
mov eax, dword [0x1005f90c]
add esi, dword [0x1005f8d8]
movzx ecx, byte [edi + eax*2]
mov eax, 0x1c77
div ecx
xor edx, edx
mov dword [0x1005f904], eax
mov eax, dword [esp + 0x2c]
movzx ecx, ax
movzx eax, bl
div ecx
mov eax, dword [esp + 0x48]
lea eax, [eax + ecx*2]
movzx eax, byte [ecx + eax]
movzx ecx, byte [esi]
sub edx, eax
imul eax, edx, 0x12f7
cdq
idiv ecx
mov eax, 0x16ae
mov byte [esi], dl
sub eax, dword [0x1005f924]
mov ecx, dword [0x1005f904]
mov dword [0x1005f924], eax
mov eax, dword [0x1005f8fc]
lea ecx, [eax + ecx*4]
mov eax, dword [0x1005f900]
mov eax, dword [eax + 0x6f00]
or dword [ecx], eax
movzx ecx, byte [edi]
mov eax, dword [0x1005f8d8]
movzx eax, byte [ecx + eax]
cmp eax, 0x1493
jb 0x10004cf8
mov eax, dword [esp + 0x18]
cmp dword [eax + ecx*4], 0x388
jne 0x10004cf8
mov ax, word [0x1005f920]
mov ecx, dword [0x1005f904]
inc ax
mov word [0x1005f920], ax
movzx eax, ax
movzx edx, word [eax + eax + 0x921]
mov eax, dword [0x1005f8f8]
mov eax, dword [eax + ecx*4]
dec ecx
mov dword [0x1005f904], ecx
cmp edx, eax
jbe 0x10004cf8
mov eax, dword [0x1005f90c]
pop edi
pop esi
pop ebp
mov ecx, dword [eax*4 + 0x1890]
dec eax
mov dword [0x1005f90c], eax
mov eax, 0xd75
pop ebx
add esp, 0x28
ret
movzx eax, bl
lea ecx, [eax*4]
imul eax, dword [ecx + ebp], 0xc5d
mov dword [ecx + ebp], eax
movzx edx, byte [edi]
movzx eax, word [0x1005f8dc]
movzx ecx, word [edx + edx + 0x921]
imul ecx, eax
mov word [edx*2 + 0x921], cx
mov eax, dword [0x1005f8d4]
dec eax
mov dword [0x1005f8d4], eax
xor dword [ebp + eax*4], 0x14f8
movzx eax, byte [0x1005f8e8]
movzx edx, byte [0x1005f8dc]
movzx ecx, byte [edi]
imul edx, eax
mov eax, dword [0x1005f928]
or dl, byte [esp + 0x14]
lea eax, [eax + ecx*2]
mov byte [ecx + eax], dl
dec dword [0x1005f8dc]
pop edi
pop esi
pop ebp
mov eax, 0xd75
pop ebx
add esp, 0x28
ret