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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov esi, esp
call fcn.0040edb0
push eax
mov edi, esp
push eax
mov ebx, esp
sub esp, 0xc
mov dword [esi + 0x24], esp
sub esp, 0x18
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x20], eax
mov esp, eax
push eax
mov ecx, esp
push eax
mov dword [esi + 0x2c], esp
sub esp, 0x68
mov edx, esp
and edx, 0xfffffff8
mov esp, edx
push eax
mov dword [esi + 0x68], esp
sub esp, 0x18
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x30], eax
mov esp, eax
push eax
mov dword [esi + 0x6c], esp
sub esp, 8
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x34], eax
mov esp, eax
push eax
mov dword [esi + 0x70], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x38], eax
mov esp, eax
push eax
mov dword [esi + 0x78], esp
sub esp, 0x14
mov dword [esi + 0x84], esp
sub esp, 0x20
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x3c], eax
mov esp, eax
push eax
mov dword [esi + 0x7c], esp
push eax
mov dword [esi + 0x40], esp
push eax
mov dword [esi + 0x88], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x28], eax
mov esp, eax
push eax
mov dword [esi + 0x80], esp
mov dword [esi + 0x74], edi
mov eax, dword [ebp + 8]
mov dword [edi], eax
jmp 0x40b2ba
mov byte [ebx], 0
jmp 0x40b2bf
mov cl, byte [ecx]
mov byte [esi + 0x44], cl
mov eax, dword [esi + 0x20]
mov byte [eax], 0xa5
mov byte [eax + 1], 0xbc
mov byte [eax + 2], 0x8c
mov byte [eax + 3], 0x44
mov byte [eax + 4], 0xb6
mov byte [eax + 5], 0xa6
mov byte [eax + 6], 0xa2
mov byte [eax + 7], 0xa0
mov byte [eax + 8], 0x1e
mov dword [eax + 0x14], 0
mov dword [eax + 0x11], 0
mov dword [eax + 0xd], 0
mov dword [eax + 9], 0
mov dword [esi + 4], 0
mov ecx, dword [esi + 4]
cmp ecx, 0x18
mov dword [esi], ebx
jae 0x40b36f
jmp 0x40b319
mov ecx, dword [esi + 4]
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x20]
movzx eax, byte [eax + edi]
mov edi, ecx
add edi, 0x48709bab
lea ecx, [ecx + eax + 0x48709bab]
and edi, eax
add edi, edi
mov eax, ecx
not eax
mov ebx, edi
and ebx, eax
not edi
and ecx, edi
sub ecx, ebx
mov dword [esi + 0x8c], ecx
mov eax, dword [esi + 0x8c]
add al, 0x53
mov ecx, dword [esi + 4]
mov edi, dword [esi + 0x20]
mov byte [edi + ecx], al
mov eax, dword [esi + 4]
inc eax
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
cmp eax, 0x18
jb 0x40b319
jmp 0x40b36f
mov edi, dword [esi + 0x24]
mov ecx, 2
mov ebx, dword [esi + 0x20]
mov eax, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, dword [esi + 0x24]
add edi, 8
mov eax, ebx
add eax, 8
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov al, byte [ebx + 8]
mov ecx, dword [esi + 0x24]
mov byte [ecx + 8], al
mov eax, dword [esi + 0x68]
mov al, byte [eax]
mov byte [esi + 0x48], al
mov byte [edx], 0x23
mov byte [edx + 1], 0x61
mov byte [edx + 2], 0xcd
mov byte [edx + 3], 0x63
mov byte [edx + 4], 0xca
mov byte [edx + 5], 0x65
mov byte [edx + 6], 0xf2
mov byte [edx + 7], 0x67
mov byte [edx + 8], 0xcd
mov byte [edx + 9], 0x69
mov byte [edx + 0xa], 0xc4
mov byte [edx + 0xb], 0x6b
mov byte [edx + 0xc], 0xf8
mov byte [edx + 0xd], 0x6d
mov byte [edx + 0xe], 3
mov byte [edx + 0xf], 0x6f
mov byte [edx + 0x10], 0xe4
mov byte [edx + 0x11], 0x51
mov byte [edx + 0x12], 0xcb
mov byte [edx + 0x13], 0x53
mov byte [edx + 0x14], 0xc4
mov byte [edx + 0x15], 0x55
mov byte [edx + 0x16], 0xf3
mov byte [edx + 0x17], 0x57
mov byte [edx + 0x18], 2
mov byte [edx + 0x19], 0x59
mov byte [edx + 0x1a], 0x3a
mov byte [edx + 0x1b], 0x5b
mov byte [edx + 0x1c], 0xfd
mov byte [edx + 0x1d], 0x5d
mov byte [edx + 0x1e], 0xce
mov byte [edx + 0x1f], 0x5f
mov byte [edx + 0x20], 0xd0
mov byte [edx + 0x21], 0x41
mov byte [edx + 0x22], 0xee
mov byte [edx + 0x23], 0x43
mov byte [edx + 0x24], 0xed
mov byte [edx + 0x25], 0x45
mov byte [edx + 0x26], 0xe5
mov byte [edx + 0x27], 0x47
mov byte [edx + 0x28], 0xe9
mov byte [edx + 0x29], 0x49
mov byte [edx + 0x2a], 0xde
mov byte [edx + 0x2b], 0x4b
mov byte [edx + 0x2c], 0xe5
mov byte [edx + 0x2d], 0x4d
mov byte [edx + 0x2e], 0xe1
mov byte [edx + 0x2f], 0x4f
mov byte [edx + 0x30], 0x1e
mov byte [edx + 0x31], 0xb1
mov byte [edx + 0x32], 0xdd
mov byte [edx + 0x33], 0xb3
mov byte [edx + 0x34], 0x2c
mov byte [edx + 0x35], 0xb5
mov byte [edx + 0x36], 0xdb
mov byte [edx + 0x37], 0xb7
mov byte [edx + 0x38], 0x2f
mov byte [edx + 0x39], 0xb9
mov byte [edx + 0x3a], 0x2d
mov byte [edx + 0x3b], 0xbb
mov byte [edx + 0x3c], 0x2b
mov byte [edx + 0x3d], 0xbd
mov byte [edx + 0x3e], 0xd3
mov byte [edx + 0x3f], 0xbf
mov byte [edx + 0x40], 6
mov byte [edx + 0x41], 0xa1
mov byte [edx + 0x42], 0xd
mov byte [edx + 0x43], 0xa3
mov byte [edx + 0x44], 0x36
mov byte [edx + 0x45], 0xa5
mov byte [edx + 0x46], 0xb
mov byte [edx + 0x47], 0xa7
mov byte [edx + 0x48], 0xc5
mov byte [edx + 0x49], 0xa9
mov byte [edx + 0x4a], 0x3f
mov byte [edx + 0x4b], 0xab
mov byte [edx + 0x4c], 0x3e
mov byte [edx + 0x4d], 0xad
mov byte [edx + 0x4e], 2
mov byte [edx + 0x4f], 0xaf
mov byte [edx + 0x50], 0x35
mov byte [edx + 0x51], 0x91
mov byte [edx + 0x52], 0x3c
mov byte [edx + 0x53], 0x93
mov byte [edx + 0x54], 0x37
mov byte [edx + 0x55], 0x95
mov byte [edx + 0x56], 0x39
mov byte [edx + 0x57], 0x97
mov byte [edx + 0x58], 0x3c
mov byte [edx + 0x59], 0x99
mov byte [edx + 0x5a], 0x3f
mov byte [edx + 0x5b], 0x9b
mov byte [edx + 0x5c], 0x38
mov byte [edx + 0x5d], 0x9d
mov byte [edx + 0x5e], 0x93
mov byte [edx + 0x5f], 0x9f
mov byte [edx + 0x60], 0x8a
mov byte [edx + 0x61], 0x81
mov byte [edx + 0x62], 0x82
mov byte [edx + 0x63], 0x83
mov dword [edx + 0x64], 0
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x68
mov ebx, dword [esi]
jae 0x40b5a3
jmp 0x40b54c
mov ecx, dword [esi + 8]
mov eax, dword [esi + 8]
movzx eax, byte [edx + eax]
mov ebx, ecx
add ebx, 0x8d689e50
lea edi, [ecx + eax - 0x729761b0]
add ecx, 0x50
and ecx, eax
and ebx, eax
add ecx, ebx
mov eax, edi
not eax
mov ebx, ecx
and ebx, eax
not ecx
and edi, ecx
sub edi, ebx
mov dword [esi + 0x90], edi
mov eax, dword [esi + 0x90]
add al, 0xd0
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
cmp eax, 0x68
jb 0x40b54c
mov ebx, dword [esi]
jmp 0x40b5a3
mov eax, dword [esi + 0x6c]
mov al, byte [eax]
mov byte [esi + 0x4c], al
mov eax, dword [esi + 0x30]
mov byte [eax], 7
mov byte [eax + 1], 0x55
mov byte [eax + 2], 0x33
mov byte [eax + 3], 0x4b
mov byte [eax + 4], 0xda
mov byte [eax + 5], 0x49
mov byte [eax + 6], 0xd7
mov byte [eax + 7], 0x4f
mov byte [eax + 8], 0x4e
mov byte [eax + 9], 0x4d
mov word [eax + 0x16], 0
mov dword [eax + 0x12], 0
mov dword [eax + 0xe], 0
mov dword [eax + 0xa], 0
mov dword [esi + 0xc], 0
mov eax, dword [esi + 0xc]
cmp eax, 0x18
jae 0x40b657
jmp 0x40b601
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0xc]
mov ebx, dword [esi + 0x30]
movzx eax, byte [ebx + eax]
mov edi, ecx
add edi, eax
add ecx, 0x4d
and ecx, eax
add ecx, ecx
sub edi, ecx
add edi, 0x5b260e4d
mov dword [esi + 0x94], edi
mov eax, dword [esi + 0x94]
mov ecx, eax
or ecx, 0xe4
and eax, 0xe4
add ecx, eax
inc cl
mov eax, dword [esi + 0xc]
mov byte [ebx + eax], cl
mov eax, dword [esi + 0xc]
inc eax
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
cmp eax, 0x18
jb 0x40b601
mov ebx, dword [esi]
jmp 0x40b657
mov eax, dword [esi + 0x74]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 0x1c
mov dword [esp], eax
mov eax, dword [esi + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov eax, dword [esi + 0x24]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 8
mov edi, dword [esi + 0x2c]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], 0
call fcn.0040c180
add esp, 0x1c
test al, 1
jne 0x40b69e
jmp 0x40ba8c
mov eax, dword [esi + 0x70]
mov al, byte [eax]
mov byte [esi + 0x50], al
mov eax, dword [esi + 0x34]
mov byte [eax], 0x4f
mov byte [eax + 1], 0x42
mov byte [eax + 2], 0xda
mov byte [eax + 7], 0
mov dword [eax + 3], 0
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x10]
cmp eax, 8
jae 0x40b723
jmp 0x40b6d0
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 0x34]
movzx edx, byte [ebx + ecx]
mov ecx, eax
add ecx, 0x6edfb024
lea eax, [eax + edx + 0x6edfb024]
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, eax
not ecx
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esi + 0x98], eax
mov eax, dword [esi + 0x98]
add al, 4
mov ecx, dword [esi + 0x10]
mov byte [ebx + ecx], al
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
cmp eax, 8
jb 0x40b6d0
mov ebx, dword [esi]
jmp 0x40b723
mov eax, dword [edi]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x34]
mov dword [esp + 4], eax
call fcn.0040dc20
add esp, 8
cmp eax, 0
jne 0x40b747
mov byte [ebx], 1
jmp 0x40ba7c
mov eax, dword [esi + 0x78]
mov al, byte [eax]
mov byte [esi + 0x54], al
mov eax, dword [esi + 0x38]
mov byte [eax], 0xc3
mov byte [eax + 1], 0xd4
mov byte [eax + 2], 0xd1
mov byte [eax + 3], 0xc7
mov byte [eax + 4], 0xcd
mov byte [eax + 5], 0xca
mov byte [eax + 6], 0xc8
mov byte [eax + 7], 0x37
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x14]
cmp eax, 0x10
jae 0x40b7ec
jmp 0x40b790
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x38]
movzx edi, byte [ebx + eax]
mov eax, edx
add eax, 0x3085c378
and eax, edi
lea ecx, [edx + edi + 0x3085c378]
add edx, 0x78
and edx, edi
add eax, edx
mov edx, ecx
not edx
mov edi, eax
and edi, edx
not eax
and ecx, eax
sub ecx, edi
mov dword [esi + 0x9c], ecx
mov eax, dword [esi + 0x9c]
add al, 0xb8
mov ecx, dword [esi + 0x14]
mov byte [ebx + ecx], al
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x14]
cmp eax, 0x10
jb 0x40b790
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi]
jmp 0x40b7ec
mov eax, dword [edi]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 4], eax
call fcn.0040c120
add esp, 8
cmp eax, 0
je 0x40ba7a
mov eax, dword [esi + 0x7c]
mov al, byte [eax]
mov byte [esi + 0x58], al
mov eax, dword [esi + 0x3c]
mov byte [eax], 0x74
mov byte [eax + 1], 0x6a
mov byte [eax + 2], 0x77
mov byte [eax + 3], 0x68
mov byte [eax + 4], 0x41
mov byte [eax + 5], 0xaf
mov byte [eax + 6], 0x6f
mov byte [eax + 7], 0x73
mov byte [eax + 8], 0x7f
mov byte [eax + 9], pe_nt_image_headers32
mov byte [eax + 0xa], 0xa2
mov byte [eax + 0xb], 0xab
mov byte [eax + 0xc], 0x70
mov byte [eax + 0xd], 0x66
mov byte [eax + 0xe], 0x7c
mov byte [eax + 0xf], 0x6c
mov byte [eax + 0x10], 0x7d
mov byte [eax + 0x11], 0x56
mov byte [eax + 0x12], 0xba
mov byte [eax + 0x13], 0x93
mov word [eax + 0x18], 0
mov dword [eax + 0x14], 0
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x18]
cmp eax, 0x1a
jae 0x40b8cb
jmp 0x40b884
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x3c]
movzx ecx, byte [edi + ecx]
mov edx, eax
add edx, 0xef9e1741
lea eax, [eax + ecx - 0x1061e8bf]
and edx, ecx
add edx, edx
sub eax, edx
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0xa0]
add al, 0x39
mov ecx, dword [esi + 0x18]
mov byte [edi + ecx], al
mov eax, dword [esi + 0x18]
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x1a
jb 0x40b884
jmp 0x40b8cb
mov edx, dword [esi + 0x84]
mov edi, edx
mov ecx, 5
mov ebx, dword [esi + 0x3c]
mov eax, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, edx
add edi, 0x14
add ebx, 0x14
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esi + 0x2c]
mov eax, dword [edi]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040c120
add esp, 8
mov ecx, dword [esi + 0x40]
mov dword [ecx], eax
cmp dword [ecx], 0
mov ebx, dword [esi]
je 0x40ba7a
mov eax, dword [ecx]
add eax, 0x13
mov dword [ecx], eax
mov eax, dword [esi + 0x80]
mov al, byte [eax]
mov byte [esi + 0x5c], al
mov eax, dword [esi + 0x28]
mov byte [eax], 0x2a
mov byte [eax + 1], 0xf
mov byte [eax + 2], 0x42
mov dword [eax + 0xb], 0
mov dword [eax + 7], 0
mov dword [eax + 3], 0
mov dword [esi + 0x1c], 0
mov eax, dword [esi + 0x1c]
cmp eax, 0xf
jae 0x40b9ac
jmp 0x40b95f
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x28]
movzx ecx, byte [edx + ecx]
mov edx, eax
add edx, 0x63a6c7f6
lea eax, [eax + ecx + 0x63a6c7f6]
and edx, ecx
add edx, edx
sub eax, edx
mov dword [esi + 0xa4], eax
mov eax, dword [esi + 0xa4]
add al, 0x46
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x28]
mov byte [edx + ecx], al
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x1c]
cmp eax, 0xf
jb 0x40b95f
mov ecx, dword [esi + 0x40]
jmp 0x40b9ac
mov eax, dword [ecx]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 4], eax
call fcn.0040c120
add esp, 8
mov ecx, dword [esi + 0x88]
mov dword [ecx], eax
cmp dword [ecx], 0
setne al
test al, 1
mov eax, dword [esi + 0x40]
jne 0x40b9dd
jmp 0x40ba7a
mov byte [0x446648], 1
mov ebx, dword [ecx]
mov edi, dword [eax]
cmp ebx, 0
jne 0x40ba03
mov ecx, edi
jmp 0x40b9f1
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40b9f1
sub eax, edi
mov ebx, edi
add ebx, eax
mov dword [esi + 0x60], 0
lea eax, [0x44664a]
cmp ebx, edi
jbe 0x40ba6d
lea ecx, [0x44664a]
jmp 0x40ba1c
cmp byte [edi], 0
jne 0x40ba25
mov eax, ecx
jmp 0x40ba6d
sub esp, 0xc
lea eax, [esi + 0x60]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esi + 0x64], ecx
call fcn.0040ec40
add esp, 0xc
add edi, eax
mov cx, word [esi + 0x60]
mov edx, dword [esi + 0x64]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, 0x446848
setb cl
mov edx, edi
sub edx, ebx
setb dl
and cl, dl
test cl, 1
mov ecx, eax
jne 0x40ba1c
mov word [eax], 0
mov ebx, dword [esi]
mov byte [ebx], 1
mov edi, dword [esi + 0x2c]
jmp 0x40ba7c
mov eax, dword [edi]
sub esp, 4
mov dword [esp], eax
call fcn.00437380
add esp, 4
mov al, byte [ebx]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret