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

Disassembly:
sub esp, 0x38
push ebx
push ebp
push esi
mov esi, dword [esp + 0x4c]
lea eax, [esp + 0x14]
push edi
mov edi, dword [esp + 0x4c]
lea ecx, [esp + 0x10]
push eax
xor ebx, ebx
mov bx, word [esi]
xor ebp, ebp
mov bp, word [esi + 2]
push ecx
push edi
call fcn.004a9760
lea edx, [esp + 0x24]
lea ecx, [esp + 0x5c]
lea eax, [edi + 2]
push edx
push ecx
push eax
call fcn.004a9760
mov edi, dword [esp + 0x68]
xor eax, eax
mov ax, word [esi + 2]
mov edx, ebx
xor ecx, ecx
sub edx, edi
mov cx, word [esi]
lea edi, [esi + 4]
push eax
push ecx
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x6c]
push edi
push 0
push 0
push edx
push fcn.004d52c0
call fcn.004a97c0
mov eax, dword [esp + 0x80]
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x50]
inc eax
push ecx
push edx
push eax
call fcn.004a9760
mov edx, dword [esp + 0x5c]
add esp, 0x40
test edx, edx
je 0x446176
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
cmp ecx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x44], ebp
jge 0x44580b
jmp 0x44579e
mov ecx, dword [esp + 0x14]
add edx, ecx
cmp edx, eax
jg 0x4457ca
xor eax, eax
xor edx, edx
mov ax, word [esi + 2]
mov dx, word [esi]
push eax
mov eax, dword [esp + 0x50]
push edx
push edi
push 0
inc eax
push ecx
push eax
push fcn.004d52c0
call fcn.004a97c0
add esp, 0x1c
jmp 0x4457f5
xor edx, edx
xor eax, eax
mov dx, word [esi + 2]
mov ax, word [esi]
push edx
mov edx, dword [esp + 0x50]
push eax
push edi
push 0
push ecx
lea ecx, [esp + 0x4c]
lea eax, [edx + 1]
push ecx
push eax
push fcn.004d52c0
call fcn.004a9980
add esp, 0x20
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
add ecx, edx
cmp ecx, eax
mov dword [esp + 0x14], ecx
jl 0x44579a
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
push edx
push edi
push 0
push eax
mov eax, dword [esp + 0x60]
add eax, 2
push eax
push fcn.004d52c0
call fcn.004a97c0
mov eax, dword [esp + 0x68]
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x34]
push ecx
push edx
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x74]
lea edx, [esp + 0x78]
push edx
lea eax, [ecx + 6]
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x84]
mov edx, ebp
sub edx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x84], edx
lea ecx, [esp + 0x54]
lea edx, [esp + 0x4c]
add eax, 3
push ecx
push edx
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x90]
add esp, 0x40
cmp ecx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], 0
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x44], eax
jge 0x445928
mov edx, dword [esp + 0x20]
jmp 0x4458b9
mov ecx, dword [esp + 0x14]
add edx, ecx
cmp edx, eax
jg 0x4458e7
xor eax, eax
xor edx, edx
mov ax, word [esi + 2]
mov dx, word [esi]
push eax
mov eax, dword [esp + 0x50]
push edx
push edi
push ecx
add eax, 3
push 0
push eax
push fcn.004d52c0
call fcn.004a97c0
add esp, 0x1c
jmp 0x445912
xor edx, edx
xor eax, eax
mov dx, word [esi + 2]
mov ax, word [esi]
push edx
mov edx, dword [esp + 0x50]
push eax
push edi
push ecx
lea ecx, [esp + 0x48]
push 0
lea eax, [edx + 3]
push ecx
push eax
push fcn.004d52c0
call fcn.004a9980
add esp, 0x20
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
add ecx, edx
cmp ecx, eax
mov dword [esp + 0x14], ecx
jl 0x4458b5
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
push edx
push edi
push eax
mov eax, dword [esp + 0x5c]
push 0
add eax, 6
push eax
push fcn.004d52c0
call fcn.004a97c0
mov eax, dword [esp + 0x68]
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x34]
push ecx
add eax, 2
push edx
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x74]
lea edx, [esp + 0x78]
push edx
lea eax, [ecx + 8]
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x84]
mov edx, ebp
sub edx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x84], edx
lea ecx, [esp + 0x54]
lea edx, [esp + 0x50]
add eax, 5
push ecx
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x90]
add esp, 0x40
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x44], ecx
jge 0x445a5e
mov edx, dword [esp + 0x20]
jmp 0x4459dd
mov eax, dword [esp + 0x14]
add edx, eax
cmp edx, ecx
jg 0x445a12
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
mov ecx, dword [esp + 0x50]
push edx
mov edx, dword [esp + 0x24]
push edi
push eax
mov eax, ebx
sub eax, edx
push eax
lea eax, [ecx + 5]
push eax
push fcn.004d52c0
call fcn.004a97c0
add esp, 0x1c
jmp 0x445a44
xor edx, edx
xor ecx, ecx
mov dx, word [esi + 2]
mov cx, word [esi]
push edx
push ecx
mov ecx, dword [esp + 0x24]
mov edx, ebx
push edi
push eax
sub edx, ecx
mov ecx, dword [esp + 0x5c]
lea eax, [esp + 0x48]
push edx
push eax
lea eax, [ecx + 5]
push eax
push fcn.004d52c0
call fcn.004a9980
add esp, 0x20
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add eax, edx
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x4459d9
mov ecx, dword [esp + 0x4c]
lea edx, [esp + 0x18]
lea eax, [esp + 0x1c]
push edx
push eax
lea eax, [ecx + 8]
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x5c]
xor edx, edx
mov dx, word [esi + 2]
xor eax, eax
mov ax, word [esi]
push edx
push eax
mov eax, dword [esp + 0x60]
push edi
push ecx
mov ecx, dword [esp + 0x38]
mov edx, ebx
sub edx, ecx
add eax, 8
push edx
push eax
push fcn.004d52c0
call fcn.004a97c0
mov eax, dword [esp + 0x74]
lea ecx, [esp + 0x40]
lea edx, [esp + 0x38]
push ecx
add eax, 6
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x80]
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x84]
push ecx
add eax, 8
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
mov ecx, ebx
add esp, 0x40
sub ecx, eax
lea eax, [edx + 7]
mov dword [esp + 0x50], ecx
lea ecx, [esp + 0x20]
lea edx, [esp + 0x1c]
push ecx
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x5c]
add esp, 0xc
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x44], ebp
jge 0x445bb9
mov edx, dword [esp + 0x1c]
jmp 0x445b38
mov eax, dword [esp + 0x14]
add edx, eax
cmp edx, ecx
jg 0x445b6d
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
push edx
mov edx, dword [esp + 0x28]
mov ecx, ebp
sub ecx, edx
mov edx, dword [esp + 0x54]
push edi
push ecx
push eax
lea eax, [edx + 7]
push eax
push fcn.004d52c0
call fcn.004a97c0
add esp, 0x1c
jmp 0x445b9f
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
push edx
mov edx, dword [esp + 0x28]
mov ecx, ebp
sub ecx, edx
push edi
push ecx
push eax
mov eax, dword [esp + 0x60]
lea edx, [esp + 0x4c]
add eax, 7
push edx
push eax
push fcn.004d52c0
call fcn.004a9980
add esp, 0x20
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add eax, edx
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x445b34
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
push ecx
inc eax
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x58]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x24]
push ecx
add eax, 7
push edx
push eax
call fcn.004a9760
mov edx, dword [esp + 0x44]
mov ecx, ebp
sub ecx, edx
lea edx, [esp + 0x30]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x64]
lea eax, [esp + 0x28]
push edx
push eax
lea eax, [ecx + 3]
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0x3c]
lea eax, [esp + 0x74]
push edx
push eax
lea eax, [ecx + 5]
push eax
call fcn.004a9760
mov eax, dword [esp + 0x80]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x80], edx
lea ecx, [esp + 0x50]
lea edx, [esp + 0x4c]
add eax, 4
push ecx
push edx
push eax
call fcn.004a9760
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x68]
add esp, 0x3c
cmp eax, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x44], ecx
jge 0x445d3e
mov ecx, dword [esp + 0x10]
cmp ecx, edx
mov dword [esp + 0x14], ecx
jge 0x445d2c
mov ecx, dword [esp + 0x1c]
jmp 0x445c94
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add edx, ecx
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jg 0x445cdc
mov ecx, dword [esp + 0x20]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x2c]
cmp edx, ecx
jge 0x445cdc
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 2]
mov dx, word [esi]
push ecx
mov ecx, dword [esp + 0x50]
push edx
push edi
push eax
mov eax, dword [esp + 0x24]
push eax
lea eax, [ecx + 4]
push eax
push fcn.004d52c0
call fcn.004a97c0
add esp, 0x1c
jmp 0x445d0a
xor edx, edx
xor ecx, ecx
mov dx, word [esi + 2]
mov cx, word [esi]
push edx
mov edx, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x54]
push edi
push eax
lea eax, [esp + 0x48]
push edx
push eax
lea eax, [ecx + 4]
push eax
push fcn.004d52c0
call fcn.004a9980
add esp, 0x20
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
add eax, ecx
cmp eax, edx
mov dword [esp + 0x14], eax
jl 0x445c90
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
jl 0x445c7e
mov eax, dword [esp + 0x54]
test eax, eax
jne 0x446176
mov esi, dword [esp + 0x4c]
lea edx, [esp + 0x28]
lea ecx, [esp + 0x54]
push edx
lea eax, [esi + 0xb]
push ecx
push eax
call fcn.004a9760
lea edx, [esp + 0x30]
lea ecx, [esp + 0x20]
lea eax, [esi + 0xc]
push edx
push ecx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x6c]
add esp, 0x18
test eax, eax
je 0x445e4c
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x445e4c
lea edx, [ecx + eax + 0x50]
cmp ebx, edx
jle 0x445e4c
mov ecx, ebx
sub ecx, eax
sub ecx, 0x14
push ecx
call fcn.004c12b0
mov ecx, dword [esp + 0x18]
mov edx, ebx
sub edx, ecx
add eax, 0xa
sub edx, 0x14
mov dword [esp + 0x14], eax
push edx
call fcn.004c12b0
mov esi, dword [esp + 0x18]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x5c]
add esp, 8
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jge 0x445e19
mov ecx, dword [esp + 0x14]
mov edx, ebx
sub edx, ecx
sub edx, 0x14
push edx
call fcn.004c12b0
mov esi, dword [esp + 0x14]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x58]
add esp, 4
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jl 0x445de4
push ebp
push ebx
push edi
push 0
push esi
mov esi, dword [esp + 0x60]
lea eax, [esi + 0xb]
push eax
push fcn.004d4cf0
call fcn.004a97c0
mov edx, dword [esp + 0x6c]
push ebp
push ebx
push edi
push 0
lea eax, [esi + 0xc]
push edx
push eax
push fcn.004d4cf0
call fcn.004a97c0
add esp, 0x38
lea ecx, [esp + 0x28]
lea edx, [esp + 0x54]
lea eax, [esi + 0x11]
push ecx
push edx
push eax
call fcn.004a9760
lea ecx, [esp + 0x30]
lea edx, [esp + 0x20]
lea eax, [esi + 0x12]
push ecx
push edx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x6c]
add esp, 0x18
test eax, eax
je 0x445f58
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x445f58
lea ecx, [ecx + eax + 0x50]
cmp ebx, ecx
jle 0x445f58
mov edx, ebx
sub edx, eax
sub edx, 0x14
push edx
call fcn.004c12b0
mov ecx, dword [esp + 0x18]
add eax, 0xa
mov dword [esp + 0x14], eax
mov eax, ebx
sub eax, ecx
sub eax, 0x14
push eax
call fcn.004c12b0
mov esi, dword [esp + 0x18]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x5c]
add esp, 8
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jge 0x445f17
mov ecx, dword [esp + 0x14]
mov edx, ebx
sub edx, ecx
sub edx, 0x14
push edx
call fcn.004c12b0
mov esi, dword [esp + 0x14]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x58]
add esp, 4
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jl 0x445ee2
mov eax, dword [esp + 0x28]
mov edx, ebp
push ebp
push ebx
sub edx, eax
push edi
push edx
push esi
mov esi, dword [esp + 0x60]
lea eax, [esi + 0x11]
push eax
push fcn.004d4cf0
call fcn.004a97c0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x6c]
mov eax, ebp
push ebp
push ebx
sub eax, edx
push edi
push eax
lea eax, [esi + 0x12]
push ecx
push eax
push fcn.004d4cf0
call fcn.004a97c0
add esp, 0x38
lea edx, [esp + 0x28]
lea ecx, [esp + 0x54]
lea eax, [esi + 0xd]
push edx
push ecx
push eax
call fcn.004a9760
lea edx, [esp + 0x30]
lea ecx, [esp + 0x20]
lea eax, [esi + 0xe]
push edx
push ecx
push eax
call fcn.004a9760
mov eax, dword [esp + 0x6c]
add esp, 0x18
test eax, eax
je 0x44605e
mov eax, dword [esp + 0x14]
test eax, eax
je 0x44605e
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [edx + eax + 0x50]
cmp ebp, ecx
jle 0x44605e
mov edx, ebp
sub edx, eax
sub edx, 0x14
push edx
call fcn.004c12b0
mov ecx, dword [esp + 0x28]
add eax, 0xa
mov dword [esp + 0x14], eax
mov eax, ebp
sub eax, ecx
sub eax, 0x14
push eax
call fcn.004c12b0
mov esi, dword [esp + 0x18]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x30]
add esp, 8
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jge 0x44602b
mov ecx, dword [esp + 0x24]
mov edx, ebp
sub edx, ecx
sub edx, 0x14
push edx
call fcn.004c12b0
mov esi, dword [esp + 0x14]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x2c]
add esp, 4
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jl 0x445ff6
push ebp
push ebx
push edi
push esi
mov esi, dword [esp + 0x5c]
push 0
lea eax, [esi + 0xd]
push eax
push fcn.004d4cf0
call fcn.004a97c0
mov edx, dword [esp + 0x6c]
push ebp
push ebx
push edi
push edx
lea eax, [esi + 0xe]
push 0
push eax
push fcn.004d4cf0
call fcn.004a97c0
add esp, 0x38
lea ecx, [esp + 0x28]
lea edx, [esp + 0x54]
lea eax, [esi + 0xf]
push ecx
push edx
push eax
mov dword [esp + 0x58], eax
call fcn.004a9760
lea eax, [esp + 0x30]
lea ecx, [esp + 0x20]
add esi, 0x10
push eax
push ecx
push esi
mov dword [esp + 0x4c], esi
call fcn.004a9760
mov eax, dword [esp + 0x6c]
add esp, 0x18
test eax, eax
je 0x446176
mov eax, dword [esp + 0x14]
test eax, eax
je 0x446176
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [edx + eax + 0x50]
cmp ebp, ecx
jle 0x446176
mov edx, ebp
sub edx, eax
sub edx, 0x14
push edx
call fcn.004c12b0
mov ecx, dword [esp + 0x28]
add eax, 0xa
mov dword [esp + 0x14], eax
mov eax, ebp
sub eax, ecx
sub eax, 0x14
push eax
call fcn.004c12b0
mov esi, dword [esp + 0x18]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x30]
add esp, 8
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jge 0x446139
mov ecx, dword [esp + 0x24]
mov edx, ebp
sub edx, ecx
sub edx, 0x14
push edx
call fcn.004c12b0
mov esi, dword [esp + 0x14]
mov ecx, eax
add ecx, 0xa
mov eax, esi
sub eax, ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x2c]
add esp, 4
cdq
xor eax, edx
add ecx, 0xa
sub eax, edx
cmp eax, ecx
jl 0x446104
mov eax, dword [esp + 0x54]
push ebp
mov edx, ebx
push ebx
push edi
sub edx, eax
mov eax, dword [esp + 0x58]
push esi
push edx
push eax
push fcn.004d4cf0
call fcn.004a97c0
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x50]
push ebp
mov ebp, dword [esp + 0x34]
push ebx
push edi
sub ebx, ebp
push ecx
push ebx
push edx
push fcn.004d4cf0
call fcn.004a97c0
add esp, 0x38
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret