Function at 0x5075e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x5c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x6c]
xor ebp, ebp
push edi
mov ecx, dword [esi + 0x9cf4]
mov eax, dword [esi + 0x9c4c]
test ecx, ecx
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x70], eax
je 0x50766d
mov eax, dword [eax + 0x3abc]
mov edi, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
mov ecx, dword [esp + 0x8c]
mov ebp, dword [eax + 4]
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
push edi
push ebx
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
push eax
push ecx
push esi
call fcn.00506870
add esp, 0x28
test eax, eax
je 0x507c72
jmp 0x50767b
mov ebx, dword [esp + 0x90]
mov edi, dword [esp + 0x94]
mov eax, dword [esi + 0x11dcc]
test eax, eax
je 0x5076e7
mov eax, dword [esi + 0x11dd4]
mov dword [esp + 0x1c], eax
cmp dword [eax], 0
je 0x507699
mov ebp, dword [eax + 0x10]
jmp 0x50769c
mov ebp, dword [eax + 8]
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x84]
push edi
push ebx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
push ecx
push edx
push esi
call fcn.00504180
add esp, 0x28
test eax, eax
je 0x507c72
cmp dword [esi + 0x9c8c], 1
jne 0x507768
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
push edi
push ebx
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
push edx
push eax
push esi
call fcn.005033b0
add esp, 0x28
test eax, eax
jne 0x50773f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
cmp dword [esi + 0x9c90], 1
je 0x507768
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 0x18]
push edx
call fcn.004f5730
push 0
push esi
call fcn.00503540
add esp, 0xc
test eax, eax
je 0x507c72
mov ecx, 0x13
xor eax, eax
lea edi, [esp + 0x20]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x18]
lea ecx, [esp + 0x14]
push eax
mov eax, dword [esi + 0x9d20]
push ecx
mov ecx, dword [esi + 0x9d1c]
push ecx
mov ecx, dword [esi + 0x9d18]
cdq
push ecx
push edx
push eax
call fcn.0053f700
push edx
push eax
call fcn.004efb90
mov eax, dword [esi + 0x11de8]
add esp, 0x10
test eax, eax
je 0x5077bb
mov edx, dword [0x72a8d0]
mov dword [esp + 0x20], edx
jmp 0x5077c4
mov eax, dword [0x72a8cc]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x14]
mov ebx, dword [esi + 0x9c48]
mov eax, dword [esi + 0x9cf0]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x3c], 1
mov dword [esp + 0x4c], edx
mov dl, byte [ecx + 0x284]
cmp eax, 0x100
mov eax, dword [esi + 0x9d0c]
mov byte [esp + 0x58], dl
jne 0x507820
mov ecx, dword [esi + 0x9d28]
mov dword [esp + 0x44], eax
add ecx, ebx
mov dword [esp + 0x38], ecx
jmp 0x50795f
mov ecx, dword [esi + 0x11e30]
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
test ecx, ecx
je 0x507839
or ah, 0x80
mov edi, dword [esi + 0x11dc4]
mov ecx, dword [esi + 0x11dc0]
lea edx, [ecx + edi]
and edx, 0x1000
or edx, 0xe6250000
or eax, edx
mov edx, dword [0x7cf9c4]
test edx, edx
jne 0x50786a
mov edx, dword [esi + 0x9d28]
add edx, ebx
jmp 0x507872
or ebx, 0x80000000
mov edx, ebx
sub ecx, edi
and ecx, 0x1000000
or ecx, 0x4c000000
or edx, ecx
mov ecx, dword [0x7cf9c8]
cmp ecx, 1
mov dword [esp + 0x38], edx
jne 0x50789e
mov ecx, dword [esi + 0x11d90]
or ah, 0x40
mov dword [esp + 0x59], ecx
mov ecx, dword [0x7cf9cc]
test ecx, ecx
je 0x5078b2
or edx, 0x10000000
mov dword [esp + 0x38], edx
mov ecx, dword [0x7cf9d8]
test ecx, ecx
je 0x5078c1
or eax, 0x20000
mov ecx, dword [0x7cf9e0]
test ecx, ecx
je 0x5078d0
or eax, 0x8000000
mov ecx, dword [0x7cf9ec]
test ecx, ecx
je 0x5078df
or eax, 0x80000
mov ecx, dword [0x7cf9d0]
mov dl, byte [esi + 0x11d88]
test ecx, ecx
mov byte [esp + 0x5d], dl
je 0x507908
mov cl, byte [esi + 0x11d84]
add cl, 0x16
shl cl, 3
and cl, 0xf8
or dl, cl
mov byte [esp + 0x5d], dl
mov ecx, dword [esi + 0x11da4]
test ecx, ecx
je 0x507936
mov ecx, dword [0x72ac90]
test ecx, ecx
je 0x507936
lea edx, [esi + 0x11dae]
or eax, 0x100000
mov ecx, dword [edx]
mov dword [esp + 0x5e], ecx
mov dx, word [edx + 4]
mov word [esp + 0x62], dx
mov ecx, dword [esi + 0x11de8]
test ecx, ecx
je 0x507950
mov ecx, dword [0x7cf9dc]
xor ecx, 1
shl ecx, 0x17
or eax, ecx
jmp 0x50795b
mov edx, dword [0x7cf9dc]
shl edx, 0x17
or eax, edx
mov dword [esp + 0x44], eax
mov edx, dword [esi + 0x9c44]
lea eax, [esp + 0x54]
lea ecx, [esp + 0x50]
push eax
mov eax, dword [esi + 0x9c40]
push ecx
push edx
push eax
call fcn.004efb90
mov eax, dword [0x7cf9f0]
add esp, 0x10
test eax, eax
je 0x5079c6
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0
je 0x507999
mov edi, dword [eax + 0xc]
mov ebx, dword [eax + 0x10]
jmp 0x50799f
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
push ebx
push edi
call fcn.005018a0
push eax
push ebx
push edi
call fcn.005043f0
mov ecx, dword [esp + 0x5c]
add esp, 0x14
xor ecx, eax
mov eax, dword [esp + 0x44]
or ah, 0x20
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], eax
lea ecx, [esp + 0x20]
push 0x48
push ecx
call fcn.005018a0
mov edi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x90]
push edi
push ebx
push edx
mov edx, dword [esp + 0x94]
push eax
mov eax, dword [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
push eax
push ecx
mov eax, ebp
mov ebp, dword [esp + 0x98]
push edx
push 0x4c
mov ecx, dword [ebp + 0x18]
cdq
push edx
push eax
lea eax, [esp + 0x58]
push eax
push ecx
call fcn.004f5ad0
add esp, 0x40
test eax, eax
je 0x507c72
cmp dword [esi + 0x9c8c], 1
jne 0x507aad
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x84]
push edi
push ebx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
push ecx
push edx
mov dword [esi + 0x9cc0], 0x4c
push esi
mov dword [esi + 0x9cc4], 0
call fcn.005033b0
add esp, 0x28
test eax, eax
je 0x507c72
mov eax, dword [0x7cf9c4]
test eax, eax
jne 0x507c6a
mov eax, dword [esi + 0x9cf8]
mov edx, dword [esi + 0x9c48]
add eax, edx
cdq
mov dword [esi + 0x9cc0], eax
mov dword [esi + 0x9cc4], edx
mov ecx, dword [esi + 0x9cc0]
mov eax, edx
mov edx, dword [ebp + 0x18]
push eax
push ecx
push edx
call fcn.004f57a0
add esp, 0xc
test eax, eax
je 0x507c72
mov eax, dword [0x7cf9e0]
test eax, eax
je 0x507b7b
mov eax, dword [esi + 0x11de8]
test eax, eax
je 0x507b3a
mov ecx, dword [esp + 0x68]
mov ebx, dword [esi + 0x9d28]
mov dl, byte [esp + 0x68]
mov edi, dword [esi + 0x9d24]
shr ecx, 8
xor eax, eax
test ebx, ebx
jle 0x507b7b
mov bl, byte [eax + edi]
sub bl, dl
add dl, cl
mov byte [eax + edi], bl
mov ebx, dword [esi + 0x9d28]
inc eax
cmp eax, ebx
jl 0x507b23
jmp 0x507b7b
mov eax, dword [esi + 0x9d18]
mov edx, dword [esi + 0x9d1c]
mov bl, byte [esi + 0x9d18]
mov ecx, 8
call fcn.00540330
mov edx, dword [esi + 0x9d28]
mov edi, dword [esi + 0x9d24]
xor ecx, ecx
test edx, edx
jle 0x507b7b
mov dl, byte [edi]
add dl, bl
add bl, al
mov byte [edi], dl
mov edx, dword [esi + 0x9d28]
inc ecx
cmp ecx, edx
jl 0x507b68
mov eax, dword [0x7cf9ec]
test eax, eax
je 0x507bba
mov ecx, dword [esi + 0x9d28]
xor eax, eax
test ecx, 0xfffffffc
jle 0x507c07
mov ecx, dword [esi + 0x9d24]
mov edx, dword [esi + 0x11ddc]
add ecx, eax
add eax, 4
mov ebp, dword [ecx]
xor ebp, edx
mov dword [ecx], ebp
mov ecx, dword [esi + 0x9d28]
and ecx, 0xfffffffc
cmp eax, ecx
jl 0x507b94
jmp 0x507c07
mov eax, dword [esi + 0x11de8]
test eax, eax
je 0x507c07
mov eax, dword [0x7cf9e0]
test eax, eax
jne 0x507c07
mov ecx, dword [esi + 0x9d28]
xor eax, eax
test ecx, ecx
jle 0x507c07
mov edx, dword [esi + 0x9d24]
add edx, eax
sar ecx, 2
mov bl, byte [edx]
xor bl, cl
mov byte [edx], bl
mov ecx, dword [esi + 0x9d24]
mov dl, byte [esp + 0x68]
add ecx, eax
mov bl, byte [ecx]
add bl, dl
inc eax
mov byte [ecx], bl
mov ecx, dword [esi + 0x9d28]
cmp eax, ecx
jl 0x507bd9
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esi + 0x9d28]
push ecx
mov ecx, dword [esi + 0x9d24]
push edx
push eax
push ecx
push esi
call fcn.00507060
add esp, 0x30
test eax, eax
je 0x507c72
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret