Function at 0x47dabd
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x9c
mov edi, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0xb4]
mov eax, dword [eax]
mov eax, dword [eax + 0x290]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 8
mov cl, byte [esp + 0x4c]
sar dword [esp + 0x50], cl
mov edx, dword [edi + 0x1fc8]
mov ebx, dword [edi + 0x1fcc]
mov dword [esp + 0x44], ebx
cmp dword [edi + 0x1cf0], 4
ja case.default.0x47db17
mov eax, dword [edi + 0x1cf0]
jmp dword [eax*4 + 0x4c4950]
push ebx
push ebx
push dword [esp + 0x4c]
mov eax, dword [esp + 0x5c]
shl eax, 1
push eax
shl esi, 5
lea eax, [edi + esi]
push dword [eax + 0x1cf8]
push dword [eax + 0x1cf4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push 0
jmp 0x47e082
shl edx, 1
mov dword [esp + 0x30], edx
mov ebp, dword [esp + 0x44]
shl ebp, 1
mov dword [esp + 0x28], ebp
shl esi, 5
lea esi, [edi + esi + 0x1cf8]
mov dword [esp + 0x88], esi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x50]
inc eax
mov dword [esp + 8], eax
mov edx, dword [esp + 0x88]
mov esi, dword [edx]
mov ebx, dword [edx - 4]
mov ecx, dword [edi + 0xb0]
mov dword [esp + 0x5c], ecx
mov cl, byte [esp + 0x4c]
sar dword [esp + 0x5c], cl
mov ebp, dword [edi + 0xac]
sar ebp, cl
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x48]
sar ebp, 1
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x48]
and eax, 1
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0xb8]
mov edx, dword [edx]
mov dword [esp + 0x38], edx
mov ecx, dword [edi + 0xb8]
mov dword [esp + 0x24], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x290]
mov dword [esp + 0x58], eax
mov eax, 2
mov cl, byte [esp + 0x58]
shl eax, cl
lea ebp, [eax - 1]
cmp dword [edi + 0x27cc], 0
je 0x47dc20
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
mov eax, esi
cdq
idiv ecx
mov esi, eax
mov edx, esi
and edx, ebp
mov dword [esp + 0x54], edx
mov ecx, dword [esp + 0x58]
inc ecx
mov edx, ebx
sar edx, cl
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x30]
imul eax, dword [esp + 0x50]
add edx, eax
sar esi, cl
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x28]
imul eax, dword [esp + 0x50]
lea ecx, [esi + eax]
mov eax, dword [esp + 0x24]
imul eax, ecx
add eax, edx
mov esi, dword [esp + 0x38]
add esi, eax
and ebx, ebp
setne al
movzx eax, al
mov ebp, dword [esp + 0x20]
sub ebp, eax
mov eax, ebp
sub eax, dword [esp + 0x50]
cmp edx, eax
ja 0x47dc93
xor eax, eax
cmp dword [esp + 0x54], 0
setne al
mov ebp, dword [esp + 0x5c]
sub ebp, eax
mov eax, ebp
sub eax, dword [esp + 0x50]
cmp ecx, eax
jbe 0x47dcc1
sub esp, 0xc
push dword [esp + 0x68]
push dword [esp + 0x30]
push ecx
push edx
push dword [esp + 0x24]
push dword [esp + 0x28]
push dword [esp + 0x48]
push esi
push dword [edi + 0xaa0]
call fcn.0046aab0
mov esi, dword [edi + 0xaa0]
add esp, 0x30
lea edx, [ebx*4]
mov eax, dword [esp + 0x54]
shl eax, 2
push ecx
push ecx
mov ebp, dword [esp + 0x60]
cmp ebp, 2
jle 0x47dcdf
mov ebp, 2
mov cl, byte [esp + 0x60]
sar eax, cl
push eax
mov cl, byte [esp + 0x64]
sar edx, cl
push edx
push dword [esp + 0x60]
push dword [esp + 0x38]
push esi
mov ebx, dword [esp + 0x48]
imul ebx, dword [esp + 0x40]
mov eax, ebx
add eax, dword [esp + 0x50]
imul eax, dword [esp + 0x6c]
add eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0xdc]
call dword [eax + ebp*4]
mov edx, dword [esp + 0xa8]
mov edx, dword [edx - 4]
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx]
add dword [esp + 0x60], ecx
inc dword [esp + 0x68]
add dword [esp + 0xa8], 8
add esp, 0x20
cmp dword [esp + 0x48], 4
jne 0x47db94
mov eax, dword [edi]
mov eax, dword [eax + 0x290]
mov dword [esp + 0x7c], eax
mov ebp, 8
mov cl, byte [esp + 0x7c]
sar ebp, cl
mov eax, 2
shl eax, cl
lea esi, [eax - 1]
mov ebx, dword [esp + 0x7c]
inc ebx
mov eax, dword [edi + 0xac]
mov cl, bl
sar eax, cl
mov dword [esp + 0x78], eax
mov eax, dword [edi + 0xb0]
sar eax, cl
mov dword [esp + 0x74], eax
cmp dword [edi + 0x27cc], 0
je 0x47ddb2
mov eax, dword [esp + 0x3c]
mov ecx, 2
cdq
idiv ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x40]
cdq
idiv ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
and eax, 0xf
movzx ecx, byte [eax + 0x4c4b94]
sar dword [esp + 0x3c], 3
add ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov eax, dword [esp + 0x40]
and eax, 0xf
movzx edx, byte [eax + 0x4c4b94]
sar dword [esp + 0x40], 3
add edx, dword [esp + 0x40]
and ecx, esi
mov dword [esp + 0x64], ecx
and esi, edx
mov dword [esp + 0x60], esi
mov cl, bl
sar dword [esp], cl
mov eax, ebp
imul eax, dword [edi + 0x1fc8]
add eax, dword [esp]
mov dword [esp + 0x6c], eax
sar edx, cl
mov eax, ebp
imul eax, dword [edi + 0x1fcc]
lea eax, [edx + eax]
mov dword [esp + 0x68], eax
mov ecx, dword [edi + 0xbc]
imul eax, ecx
add eax, dword [esp + 0x6c]
mov dword [esp + 0x84], eax
mov edx, eax
mov ebx, dword [esp + 0xb8]
add edx, dword [ebx + 4]
test byte [edi + 0x3d], 0x40
je 0x47deb0
xor eax, eax
cmp dword [esp + 0x64], 0
setne al
mov ebx, dword [esp + 0x78]
sub ebx, eax
mov eax, ebx
sub eax, ebp
cmp dword [esp + 0x6c], eax
ja 0x47de6d
xor eax, eax
test esi, esi
setne al
mov ebx, dword [esp + 0x74]
sub ebx, eax
mov eax, ebx
sub eax, ebp
cmp dword [esp + 0x68], eax
jbe 0x47deb0
sub esp, 0xc
push dword [esp + 0x80]
push dword [esp + 0x88]
push dword [esp + 0x7c]
push dword [esp + 0x84]
push 9
push 9
push ecx
push edx
push dword [edi + 0xaa0]
call fcn.0046aab0
mov edx, dword [edi + 0xaa0]
mov dword [esp + 0xa0], 1
add esp, 0x30
jmp 0x47deb8
mov dword [esp + 0x70], 0
mov esi, dword [esp + 0x64]
shl esi, 2
mov cl, byte [esp + 0x7c]
sar esi, cl
mov ebx, dword [esp + 0x60]
shl ebx, 2
sar ebx, cl
mov ecx, dword [esp + 0x7c]
cmp ecx, 2
jle 0x47dedc
mov ecx, 2
mov eax, dword [esp + 0xbc]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x80], ecx
push eax
push eax
push ebx
push esi
push ebp
push dword [edi + 0xbc]
push edx
push dword [esp + 0x34]
call dword [ecx]
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xd8]
add eax, dword [edx + 8]
add esp, 0x20
cmp dword [esp + 0x70], 0
je 0x47df55
sub esp, 0xc
push dword [esp + 0x80]
push dword [esp + 0x88]
push dword [esp + 0x7c]
push dword [esp + 0x84]
push 9
push 9
push dword [edi + 0xbc]
push eax
push dword [edi + 0xaa0]
call fcn.0046aab0
mov eax, dword [edi + 0xaa0]
add esp, 0x30
push ecx
push ecx
push ebx
push esi
push ebp
push dword [edi + 0xbc]
push eax
push dword [esp + 0xcc]
mov ecx, dword [esp + 0xa0]
call dword [ecx]
add esp, 0x20
jmp case.default.0x47db17
mov edx, dword [edi + 0x2920]
cmp edx, 3
lea eax, [esi + 0x3a6]
jne 0x47e026
push edx
push edx
push dword [esp + 0x4c]
push dword [esp + 0x5c]
mov ebx, esi
shl ebx, 5
lea ebx, [edi + ebx]
push dword [ebx + 0x1cf8]
push dword [ebx + 0x1cf4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push dword [edi + eax*8 + 4]
push 0
push 1
push dword [esp + 0xdc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, edi
call fcn.0047d5a7
add esp, 0x28
push dword [esp + 0x4c]
push dword [esp + 0x5c]
push dword [ebx + 0x1d00]
push dword [ebx + 0x1cfc]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push dword [edi + esi*8 + 0x1d38]
push 1
push 1
push dword [esp + 0xdc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, edi
call fcn.0047d5a7
add esp, 0x30
jmp case.default.0x47db17
mov ecx, dword [edi + eax*8 + 4]
lea eax, [ecx + 1]
cmp edx, eax
je 0x47e050
cmp dword [edi + 0xad0], 3
je 0x47e050
cmp dword [edi + 0x2968], 0
jne 0x47e050
mov ebx, dword [edi + 0xa00]
mov dword [esp + 0xb8], ebx
push eax
push eax
sar dword [esp + 0x4c], 1
push dword [esp + 0x4c]
mov eax, dword [esp + 0x5c]
shl eax, 1
push eax
shl esi, 5
lea eax, [edi + esi]
push dword [eax + 0x1cf8]
push dword [eax + 0x1cf4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push ecx
push 0
push 0
jmp 0x47e008
mov ebp, dword [esp + 0x44]
sar ebp, 1
mov dword [esp + 0x90], ebp
mov eax, dword [esp + 0x50]
shl eax, 1
mov dword [esp + 0x94], eax
lea edx, [edi + esi*8 + 0x1d34]
mov dword [esp + 0x8c], edx
shl esi, 5
lea ebx, [edi + esi + 0x1cf8]
xor ebp, ebp
xor esi, esi
mov eax, dword [esp + 0x8c]
mov ecx, dword [eax]
lea eax, [ecx + 1]
cmp dword [edi + 0x2920], eax
je 0x47e0ec
cmp dword [edi + 0xad0], 3
je 0x47e0ec
cmp dword [edi + 0x2968], 0
jne 0x47e0ec
mov edx, dword [edi + 0xa00]
jmp 0x47e0f3
mov edx, dword [esp + 0xb8]
push eax
push eax
push dword [esp + 0x98]
push dword [esp + 0x5c]
mov eax, esi
add eax, dword [ebx]
push eax
push dword [ebx - 4]
push dword [esp + 0xd4]
push edx
push ecx
push 0
push 0
push dword [esp + 0xdc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, edi
call fcn.0047d5a7
mov eax, dword [edi + 0xb8]
mov ecx, dword [edi + 0x2950]
mov edx, dword [edi + 0xbc]
inc ebp
add dword [esp + 0xbc], 4
add ebx, 8
add esi, dword [esp + 0xc4]
add esp, 0x30
cmp ebp, 2
je case.default.0x47db17
imul eax, dword [esp + 0x94]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x94]
sar eax, cl
imul eax, edx
add dword [esp + 0x18], eax
add dword [esp + 0xb0], eax
jmp 0x47e0be
cmp dword [edi + 0x2920], 3
lea edx, [edi + 0x10b4]
mov dword [esp + 0xc], edx
jne 0x47e213
xor ebx, ebx
shl esi, 1
mov dword [esp + 4], esi
jmp 0x47e1fe
push eax
push eax
push dword [esp + 0x4c]
push dword [esp + 0x5c]
push dword [ebp]
push dword [ebp - 4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
mov eax, esi
xor eax, ebx
push eax
push esi
push 1
push dword [esp + 0xdc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, edi
call fcn.0047d5a7
inc esi
add ebp, 8
add esp, 0x30
cmp esi, 2
jne 0x47e1a1
inc ebx
cmp ebx, 2
je case.default.0x47db17
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xbc], ecx
mov ebp, dword [esp + 4]
lea eax, [ebx + ebp]
shl eax, 4
lea ebp, [edi + eax + 0x1cf8]
xor esi, esi
jmp 0x47e1a1
mov eax, dword [esp + 0x44]
sar eax, 1
mov dword [esp + 0x98], eax
mov ebp, dword [esp + 0x50]
shl ebp, 1
shl esi, 5
lea ebx, [edi + esi + 0x1cf8]
xor esi, esi
inc esi
push eax
push eax
push dword [esp + 0xa0]
push ebp
push dword [ebx]
push dword [ebx - 4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
xor eax, eax
cmp dword [edi + 0x2920], esi
setne al
push eax
push 0
push 0
push dword [esp + 0xdc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov eax, edi
call fcn.0047d5a7
add esp, 0x30
cmp dword [edi + 0x2968], 0
jne 0x47e28f
mov edx, dword [edi + 0xa00]
mov dword [esp + 0xb8], edx
add ebx, 0x10
cmp esi, 2
je case.default.0x47db17
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xbc], ecx
jmp 0x47e232
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret