Function at 0x431d20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x481195
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x49d140]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x44], eax
mov esi, dword [ebp + 8]
mov dword [ebp - 0x40], esi
mov dword [ebp - 4], 1
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x43212b
mov edi, dword [ebp + 0x14]
test edi, edi
je 0x43212b
mov ecx, dword [edx + 0x50]
mov dword [ebp - 0x50], ecx
cmp ecx, 8
jl 0x431deb
call fcn.00406f90
mov edi, dword [ebp + 0x10]
mov dword [esi], 7
mov dword [esi + 4], eax
or esi, 0xffffffff
test edi, edi
je 0x431db5
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x431db5
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x431db5
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x432187
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x432187
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x432187
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp 0x432187
add edi, 0x38
lea ebx, [edx + 0x38]
mov dword [ebp - 0x4c], edi
cmp ecx, 1
jne 0x431eb8
mov ecx, dword [ebx + 0x10]
xor esi, esi
cmp dword [ebx + 0x14], 0xf
jbe 0x431e0e
mov eax, dword [ebx]
add ecx, eax
jmp 0x431e12
add ecx, ebx
mov eax, ebx
cmp eax, ecx
je 0x431e41
xor esi, esi
nop dword [eax + eax]
movzx edx, byte [eax]
add esi, esi
movzx edx, byte [edx + 0x490600]
movzx esi, byte [edx + esi*8 + 0x490700]
cmp esi, 1
je 0x431e45
inc eax
cmp eax, ecx
jne 0x431e20
mov edx, dword [ebp + 0xc]
test esi, esi
je 0x431eb5
call fcn.00406f90
mov ebx, dword [ebp - 0x40]
or esi, 0xffffffff
mov edi, dword [ebp + 0x10]
mov dword [ebx], 5
mov dword [ebx + 4], eax
test edi, edi
je 0x431e7f
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x431e7f
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x431e7f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x43218a
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x43218a
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x43218a
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp 0x43218a
mov eax, dword [ebp - 0x44]
mov cl, byte [eax + 5]
mov dl, byte [edx + 0x55]
mov byte [ebp - 0x35], cl
mov byte [ebp - 0x3b], dl
test cl, cl
jne 0x431ed4
mov ecx, dword [eax + 0x58]
call fcn.00437800
mov esi, eax
jmp 0x431ed6
xor esi, esi
mov eax, dword [edi + 0x10]
mov edx, dword [ebx + 0x10]
mov dword [ebp - 0x44], eax
cmp edx, eax
ja 0x431ef6
mov dword [edi + 0x10], edx
mov eax, edi
cmp dword [edi + 0x14], 0xf
jbe 0x431ef0
mov eax, dword [edi]
mov byte [eax + edx], 0
jmp 0x431f43
mov ecx, edx
sub ecx, eax
mov eax, dword [edi + 0x14]
sub eax, dword [ebp - 0x44]
mov dword [ebp - 0x48], ecx
cmp ecx, eax
ja 0x431f31
cmp dword [edi + 0x14], 0xf
mov eax, edi
mov dword [edi + 0x10], edx
jbe 0x431f14
mov eax, dword [edi]
mov edi, dword [ebp - 0x44]
push ecx
add edi, eax
push 0
push edi
call fcn.0045a5d0
mov eax, dword [ebp - 0x48]
add esp, 0xc
mov byte [edi + eax], 0
mov edi, dword [ebp - 0x4c]
jmp 0x431f43
push 0
push ecx
mov byte [ebp - 0x48], 0
push dword [ebp - 0x48]
push ecx
mov ecx, edi
call fcn.00422140
cmp byte [ebp - 0x35], 0
mov ecx, dword [edi + 0x14]
jne 0x431fc8
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], edi
cmp ecx, 0xf
jbe 0x431f5c
mov eax, dword [edi]
mov dword [ebp - 0x44], eax
cmp dword [ebx + 0x14], 0xf
mov ecx, dword [ebx + 0x10]
jbe 0x431f6b
mov eax, dword [ebx]
add ecx, eax
jmp 0x431f6f
add ecx, ebx
mov eax, ebx
xor edi, edi
cmp eax, ecx
je 0x431f92
mov ebx, dword [ebp - 0x44]
sub ebx, eax
nop word [eax + eax]
mov dl, byte [ebp + edi - 0x48]
inc edi
xor dl, byte [eax]
and edi, 3
mov byte [eax + ebx], dl
inc eax
cmp eax, ecx
jne 0x431f80
mov edi, dword [ebp - 0x4c]
mov edx, dword [edi + 0x10]
xor al, al
xor bl, bl
movzx ecx, al
cmp byte [ebp - 0x3b], bl
mov edi, 0x80
mov al, byte [ebp - 0x50]
cmovne ecx, edi
and al, 0xf
or cl, al
mov byte [ebp - 0x3c], cl
movzx ecx, bl
mov bl, byte [ebp - 0x35]
test bl, bl
cmove ecx, edi
cmp edx, 0x7d
ja 0x432000
mov al, dl
jmp 0x43200b
mov edx, edi
cmp ecx, 0xf
jbe 0x431fd1
mov edx, dword [edi]
cmp dword [ebx + 0x14], 0xf
mov eax, dword [ebx + 0x10]
jbe 0x431fed
mov ecx, dword [ebx]
add eax, ecx
sub eax, ecx
push eax
push ecx
push edx
call fcn.0045a050
add esp, 0xc
jmp 0x431f95
mov ecx, ebx
add eax, ebx
sub eax, ecx
push eax
push ecx
push edx
call fcn.0045a050
add esp, 0xc
jmp 0x431f95
cmp edx, 0xffff
seta al
add al, 0x7e
or cl, al
mov byte [ebp - 0x3b], cl
lea ecx, [ebp - 0x1c]
test bl, bl
jne 0x43207e
push esi
push 0
push edx
call fcn.00404510
mov esi, dword [ebp + 0x14]
lea eax, [ebp - 0x1c]
push eax
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x34]
call fcn.00404620
add esp, 4
lea ecx, [esi + 8]
mov byte [ebp - 4], 2
cmp ecx, eax
je 0x432052
cmp dword [eax + 0x14], 0xf
mov edx, dword [eax + 0x10]
jbe 0x43204b
mov eax, dword [eax]
push edx
push eax
call fcn.0041ae80
mov ecx, dword [ebp - 0x20]
cmp ecx, 0xf
jbe 0x4320bb
mov edx, dword [ebp - 0x34]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4320b1
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4321aa
jmp 0x4320b1
push 0
push edx
call fcn.004044e0
mov esi, dword [ebp + 0x14]
lea eax, [ebp - 0x1c]
push eax
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x34]
call fcn.00404620
add esp, 4
lea ecx, [esi + 8]
mov byte [ebp - 4], 3
cmp ecx, eax
je 0x432052
cmp dword [eax + 0x14], 0xf
mov edx, dword [eax + 0x10]
jbe 0x43204b
jmp 0x432049
push ecx
push edx
call fcn.00458ac3
add esp, 8
mov eax, dword [ebp + 0x14]
or esi, 0xffffffff
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x50]
mov byte [eax + 0x54], 1
mov eax, dword [ebp + 0x14]
mov dword [eax + 0x50], ecx
mov edi, dword [ebp + 0x10]
mov dword [ebx], 0
mov dword [ebx + 4], 0x49dbf8
test edi, edi
je 0x432104
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x432104
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x432104
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x43218a
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x43218a
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x43218a
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
jmp 0x43218a
call fcn.00406f90
mov edi, dword [ebp + 0x10]
mov dword [esi], 6
mov dword [esi + 4], eax
or esi, 0xffffffff
test edi, edi
je 0x432162
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x432162
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, esi
lock xadd dword [edi + 8], eax
jne 0x432162
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x432187
mov eax, esi
lock xadd dword [edi + 4], eax
jne 0x432187
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], esi
dec esi
jne 0x432187
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 4]
mov ebx, dword [ebp - 0x40]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00458460
mov esp, ebp
pop ebp
ret 0x14
call fcn.0046546a
int3