Function at 0x3a4400
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xd0
mov ecx, dword [esp + 0xdc]
mov eax, dword [ecx]
test ah, 4
push ebp
mov ebp, dword [esp + 0xdc]
push edi
lea edi, [ebp + 0x10]
mov dword [esp + 8], 0
mov dword [esp + 0x14], edi
je 0x3a4461
xor eax, eax
cmp dword [edi + 0x1dc], eax
jle 0x3a4454
lea ecx, [edi + 0xf4]
lea esp, [esp]
mov dword [ecx], 0
add eax, 1
add ecx, 4
cmp eax, dword [edi + 0x1dc]
jl 0x3a4440
pop edi
xor eax, eax
pop ebp
add esp, 0xd0
ret 0xc
test ah, 8
push ebx
mov ebx, dword [esp + 0xe0]
push esi
je 0x3a45bb
mov eax, dword [ecx + 0x20]
mov dword [ebp + 0x798], eax
cmp dword [ebx + 0x12d50], 0
jge 0x3a4493
mov ecx, dword [ebx + 0x12bec]
mov dword [edi + 0x6b8], ecx
jmp 0x3a44a8
mov eax, dword [ebx + 0x12bec]
mov ecx, dword [ecx + 0x20]
cmp eax, ecx
jge 0x3a44a2
mov eax, ecx
mov dword [edi + 0x6b8], eax
mov eax, 1
cmp dword [edi + 0x6b8], eax
jl 0x3a45b4
test byte [edi + 9], 2
je 0x3a45b4
xor esi, esi
test byte [ebx + 0x12], 8
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], 0x1000
je 0x3a44e1
test byte [edi + 0x15], 2
je 0x3a44e1
mov dword [esp + 0x14], eax
add edi, 0x1fc
mov dword [esp + 0x20], edi
jmp 0x3a44f0
mov edx, dword [edi]
lea eax, [esp + 0x30]
push eax
push ebp
push ebx
mov dword [esp + 0x48], edx
call fcn.003a4400
add esi, 1
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4518
add edi, 4
cmp esi, dword [esp + 0x14]
jbe 0x3a44f0
jmp 0x3a4583
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], esi
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
push eax
push ebp
push ebx
call fcn.0039ac20
mov esi, eax
lea ecx, [esi + 0x30]
xor edi, edi
mov dword [esp + 0x14], ecx
lea ecx, [ecx]
test byte [esi + 8], 1
je 0x3a4554
mov edx, dword [esp + 0x14]
push edi
push edx
push esi
push ebp
push ebx
call fcn.003a1260
add dword [esp + 0x14], 0x140
add edi, 1
cmp edi, 1
jle 0x3a4540
mov eax, dword [esi + 8]
test al, 1
je 0x3a4577
and al, 0xfe
mov dword [esi + 0xc], 0
mov dword [esi + 8], eax
add dword [esp + 0x18], 4
sub dword [esp + 0x28], 1
jne 0x3a4524
cmp dword [esp + 0x10], 0
jne 0x3a45b0
mov eax, dword [esp + 0x1c]
mov edx, 0xfffffdff
and dword [ebx + 0x104d0], edx
mov ecx, 0x40
or dword [ebx + 0x104cc], ecx
and dword [eax + 8], edx
or dword [eax + 4], ecx
push ebx
call fcn.003a7180
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0xec]
test byte [ecx + 3], 0x40
je 0x3a4639
cmp dword [ebx + 0x10458], 0
je 0x3a4639
mov eax, dword [esp + 0xec]
mov ecx, dword [eax + 0x24]
push ecx
push ebp
mov esi, ebx
call fcn.0039b990
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4fb1
mov esi, dword [esp + 0xec]
mov edx, dword [esi + 0x24]
push ebx
mov dword [ebp + 0x79c], edx
call fcn.003900f0
cmp dword [ebp + 0x79c], 0
je 0x3a4633
test byte [edi + 4], 2
jne 0x3a4640
or byte [edi + 9], 0x10
test byte [ebx + 0x10480], 0x48
mov eax, dword [edi + 8]
je 0x3a4624
or ah, 0x20
mov dword [edi + 8], eax
test byte [ebx + 0x10480], 8
jne 0x3a4640
or byte [edi + 9], 0x80
jmp 0x3a4640
and byte [edi + 9], 0x4f
jmp 0x3a4640
mov esi, dword [esp + 0xec]
test byte [esi + 3], 0x80
je 0x3a4656
test byte [edi + 0xa], 1
je 0x3a4656
push ebx
call fcn.003a6540
and byte [edi + 0xa], 0xfe
mov eax, dword [esi]
test eax, 0x1000000
je 0x3a4691
test eax, 0x4000000
je 0x3a466a
or dword [edi + 8], 0x20
test byte [esi + 3], 8
je 0x3a4674
or dword [edi + 8], 0x40
test byte [esi + 3], 0x10
je 0x3a467e
and dword [edi + 8], 0xffffffbf
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x28]
push eax
push ecx
push ebp
push ebx
call fcn.00397e50
mov dword [esp + 0x10], eax
test byte [esi + 3], 0x20
je 0x3a46be
push edi
push ebx
mov dword [edi + 0x6ec], 0
call fcn.0039eb20
mov edx, dword [edi + 0x70c]
push edx
push ebp
push ebx
call fcn.00397d20
mov dword [esp + 0x10], 0
test byte [esi + 1], 2
je 0x3a46f7
mov ecx, dword [esi + 0x14]
push 1
mov edx, ebp
call fcn.003a0250
lea eax, [esp + 0x30]
push eax
push 0x39cf40
push 0
push 0
push 0
push ebp
push ebx
mov dword [esp + 0x5c], 0x10040
mov dword [esp + 0x60], 0
call fcn.0039ccd0
test byte [esi + 1], 0x10
je 0x3a4900
mov edi, dword [esp + 0xec]
mov ecx, dword [edi + 0xc]
push ecx
xor eax, eax
push ebp
push ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], eax
call fcn.0039ac20
mov esi, eax
test esi, esi
mov dword [esp + 0x14], esi
je 0x3a49ee
mov edx, dword [esp + 0x1c]
test byte [edx + 6], 4
je 0x3a474e
push edi
push ebx
mov eax, ebp
call fcn.003a3000
test eax, eax
jne 0x3a4fb1
mov esi, dword [esi + 8]
test esi, 0x800
je 0x3a4762
test byte [ebx + 0x1047d], 0x20
je 0x3a476a
test esi, 0x400
je 0x3a4779
mov dword [esp + 0x18], 0
mov edi, 1
jmp 0x3a4782
mov edi, 1
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 4]
and eax, 0x20000
je 0x3a4798
mov dword [esp + 0x18], 0
test esi, 0x2000
je 0x3a47b7
test eax, eax
je 0x3a47b3
pop esi
pop ebx
pop edi
xor eax, eax
pop ebp
add esp, 0xd0
ret 0xc
mov dword [esp + 0x20], edi
test esi, 0x4000
je 0x3a4812
mov eax, dword [ebx + 0x14]
test al, 1
je 0x3a4812
test eax, 0x800000
je 0x3a4812
mov eax, dword [ebp + 0x14]
test al, 1
je 0x3a4812
test eax, 0x104000
jne 0x3a4812
test byte [ebp + 0x775], 2
jne 0x3a4812
mov edx, dword [ebp + 0x2a0]
mov eax, dword [ebp + 0x76c]
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [ebx + 0xc]
push edx
push eax
push ecx
call fcn.003a8af0
test eax, eax
jne 0x3a4812
cmp dword [esp + 0x28], ebp
je 0x3a4812
mov dword [esp + 0x10], edi
mov dword [esp + 0x2c], edi
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
push edx
push eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0xc]
push ecx
push ebx
push eax
mov edi, ebp
lea esi, [esp + 0x88]
call fcn.0039e990
mov esi, dword [esp + 0x2c]
jmp 0x3a4840
mov edx, dword [esp + 0x18]
push 1
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb8], esi
call fcn.003a18b0
mov edi, eax
sub esi, 1
test edi, edi
mov dword [esp + 0x10], edi
je 0x3a487f
cmp dword [esp + 0x18], 0
je 0x3a487b
test byte [ebp + 0x774], 0x20
je 0x3a48cc
test esi, esi
jge 0x3a4840
sub dword [esp + 0x18], 1
test edi, edi
je 0x3a4892
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esp + 0x20]
jge 0x3a4834
mov esi, dword [esp + 0x14]
and dword [esi + 8], 0xffffffef
and dword [ebp + 0x774], 0xffffffdf
test edi, edi
je 0x3a48e5
test byte [esi + 9], 0x20
je 0x3a48bd
push 0x10040
push 0
push 0
push 0
push ebp
push ebx
call fcn.0039cf80
pop esi
pop ebx
mov eax, edi
pop edi
pop ebp
add esp, 0xd0
ret 0xc
or dword [ebp + 0x774], 0x20
pop esi
pop ebx
pop edi
mov eax, 0xee00001
pop ebp
add esp, 0xd0
ret 0xc
push ebp
push ebx
call fcn.003a0840
test byte [esi + 9], 0x20
je 0x3a4900
or byte [ebp + 0x775], 0x40
push ebp
push ebx
call fcn.0039ac80
mov edi, dword [esp + 0xec]
test byte [edi], 0x80
je 0x3a4965
mov edx, dword [edi + 0xc]
push edx
push ebp
push ebx
call fcn.0039ac20
test eax, eax
mov dword [esp + 0x14], eax
je 0x3a49ee
push 0
push 1
push 3
push ebx
push eax
mov edi, ebp
lea esi, [esp + 0x88]
call fcn.0039e990
push 1
mov ecx, esi
push ecx
call fcn.003a18b0
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4fad
push ebp
push ebx
call fcn.003a0840
mov eax, dword [esp + 0x14]
or dword [eax + 8], 0x20
mov edi, dword [esp + 0xec]
test byte [edi + 1], 0x20
je 0x3a49a8
mov edx, dword [edi + 0xc]
push edx
push ebp
push ebx
call fcn.0039ac20
test eax, eax
mov dword [esp + 0x14], eax
je 0x3a49ee
push 0
mov esi, eax
lea eax, [esi + 0x30]
push eax
push esi
push ebp
push ebx
call fcn.003a1260
mov edx, dword [esp + 0x1c]
mov esi, dword [esi + 4]
add edx, 0xf4
call fcn.0039b5b0
mov eax, dword [esp + 0x14]
and dword [eax + 8], 0xffffffdf
test byte [edi], 0x20
je 0x3a49da
mov ecx, dword [edi + 0xc]
push ecx
push ebp
push ebx
call fcn.0039ac20
test eax, eax
je 0x3a49ee
cmp dword [eax + 0x2c], 0
jne 0x3a4a06
mov edx, dword [edi + 8]
mov esi, dword [eax + 4]
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0x1c]
add edx, 0xf4
call fcn.0039b5b0
test byte [edi], 0x40
je 0x3a4a31
mov eax, dword [edi + 0xc]
push eax
push ebp
push ebx
call fcn.0039ac20
test eax, eax
jne 0x3a4a00
pop esi
pop ebx
pop edi
mov eax, 0xee00007
pop ebp
add esp, 0xd0
ret 0xc
cmp dword [eax + 0x2c], 0
jne 0x3a4a18
pop esi
pop ebx
pop edi
mov eax, 0xee00000
pop ebp
add esp, 0xd0
ret 0xc
mov edx, dword [esp + 0x1c]
mov esi, dword [eax + 4]
add edx, 0xf4
mov dword [eax + 0x2c], 0
call fcn.0039b5b0
test byte [edi + 1], 0x40
je 0x3a4a95
mov edx, dword [ebp + 0x76c]
lea ecx, [esp + 0x20]
push ecx
push edx
push ebx
mov dword [esp + 0x2c], 0
call fcn.003ab3e0
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4fb1
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
lea edi, [eax + 0x2a8]
mov ecx, 0x104
rep movsd dword es:[edi], dword [esi]
mov cl, byte [ebx + 0x10]
mov edi, dword [esp + 0xec]
and cl, 0x40
neg cl
sbb ecx, ecx
and ecx, 0x1000000
add ecx, 0xff000000
mov dword [eax + 0x2b0], ecx
xor esi, esi
test byte [edi + 1], 1
je 0x3a4ab6
cmp dword [edi + 0x10], esi
mov eax, dword [esp + 0x1c]
je 0x3a4aac
or byte [eax + 5], 0x10
jmp 0x3a4ab0
and byte [eax + 5], 0xef
push ebx
call fcn.003900f0
test byte [edi + 2], 2
je 0x3a4aed
push ebp
push ebx
call fcn.003a6de0
mov esi, eax
test esi, esi
mov dword [esp + 0x10], esi
je 0x3a4aeb
mov edx, dword [ebp + 0x764]
push 0
push edx
push ebx
call fcn.003a68e0
mov eax, esi
pop esi
pop ebx
pop edi
pop ebp
add esp, 0xd0
ret 0xc
xor esi, esi
test byte [edi + 2], 0x80
je 0x3a4b8d
mov eax, dword [edi + 0x30]
mov dword [ebp + 0xd0], eax
mov ecx, dword [edi + 0x34]
mov dword [ebp + 0xd4], ecx
mov edx, dword [edi + 0x1c]
mov dword [ebp + 0x778], edx
xor eax, eax
cmp eax, dword [edi + 0x1c]
mov dword [ebp + 0x290], esi
mov dword [ebp + 0x294], esi
sbb ecx, ecx
neg ecx
mov dword [ebp + 0x1f0], ecx
mov edx, dword [edi + 0x30]
mov ecx, dword [ebp + 0x780]
mov dword [ebp + 0x298], edx
mov eax, dword [edi + 0x34]
mov dword [ebp + 0x29c], eax
mov dword [ecx + 0x10], esi
mov edx, dword [ebp + 0x780]
mov dword [edx + 0x14], esi
mov eax, dword [ebp + 0x780]
mov ecx, dword [edi + 0x30]
push esi
mov dword [eax + 0x18], ecx
mov edx, dword [ebp + 0x780]
mov eax, dword [edi + 0x34]
push ebp
push ebx
mov dword [edx + 0x1c], eax
call fcn.003a1430
push esi
push esi
push ebp
push ebx
call fcn.003a3ec0
cmp dword [edi + 0x38], esi
je 0x3a4b85
or byte [ebp + 0x15], 4
jmp 0x3a4b89
and byte [ebp + 0x15], 0xfb
mov dword [esp + 0x10], esi
test byte [edi + 2], 0x10
je 0x3a4d50
mov eax, dword [ebx + 0x12f7c]
test eax, eax
je 0x3a4d44
cmp dword [eax + 0x40], 0
mov ecx, dword [esp + 0xec]
mov edx, dword [ecx + 4]
mov dword [esp + 0x14], edx
je 0x3a4bcc
push eax
push ebx
call fcn.003a39e0
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4fb1
cmp dword [ebx + 0x1044c], 0
mov dword [esp + 0x20], 0
jbe 0x3a4c3a
mov eax, dword [esp + 0x1c]
add eax, 0x24c
mov dword [esp + 0x18], eax
lea ebx, [ebx]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push edx
push ebp
push ebx
call fcn.0039ac20
push 0
push 1
push 3
push ebx
push eax
mov edi, ebp
lea esi, [esp + 0x88]
call fcn.0039e990
push 1
mov eax, esi
push eax
call fcn.003a18b0
add dword [esp + 0x18], 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
add eax, 1
cmp eax, dword [ebx + 0x1044c]
mov dword [esp + 0x20], eax
jb 0x3a4bf0
mov eax, dword [ebx + 0x12f7c]
cmp dword [eax], 0x40
je 0x3a4d30
cmp dword [eax + 4], 0x40
je 0x3a4d30
mov edi, dword [esp + 0x1c]
mov ecx, dword [edi + 0x24c]
push ecx
push ebp
push ebx
call fcn.0039ac20
mov edx, dword [ebx + 0x12f7c]
push 8
lea ecx, [esp + 0x24]
push ecx
push 0x2c7
mov esi, eax
mov dword [esp + 0x2c], 1
mov eax, dword [edx + 0x38]
push 0xbfef0100
push ebx
mov dword [esp + 0x38], eax
call fcn.000485c0
test eax, eax
je 0x3a4cfb
mov dword [esp + 0x10], 0xee00000
mov esi, dword [esp + 0x14]
mov eax, dword [ebx + 0x12f7c]
cmp dword [eax + esi*4], 0x40
jne 0x3a4d44
mov ecx, eax
add dword [ecx + esi*4 + 8], 1
push ebp
lea eax, [ecx + esi*4 + 8]
push ebx
call fcn.003a0840
mov eax, dword [esp + 0xec]
mov ecx, esi
mov edx, 1
shl edx, cl
mov dword [esp + 0x10], 0
or dword [ebp + 0x7a4], edx
mov ecx, dword [eax + 0x18]
mov dword [edi + 0x260], ecx
mov edx, dword [ebx + esi*4 + 0x10438]
mov dword [edi + 0x264], edx
jmp 0x3a4d50
mov edx, dword [esi + 0x94]
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x30]
push edx
push eax
push ecx
push 1
push ebx
call fcn.0004b070
test eax, eax
mov dword [esp + 0x10], eax
jne 0x3a4c9f
mov edx, dword [ebx + 0x12f7c]
mov esi, dword [esp + 0x14]
mov dword [edx + esi*4], 0x40
jmp 0x3a4ca3
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov dword [eax + esi*4], 0x40
jmp 0x3a4ca3
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x3a4fb1
mov eax, dword [esp + 0xec]
test byte [eax + 2], 0x20
je 0x3a4f14
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x264]
mov ecx, eax
xor esi, esi
and ecx, 0xf
cmp eax, esi
je 0x3a4d94
cmp ecx, 2
jae 0x3a4d94
cmp eax, dword [ebx + ecx*4 + 0x10438]
jne 0x3a4d94
mov eax, dword [ebx + 0x12f7c]
cmp eax, esi
je 0x3a4d94
cmp dword [eax + ecx*4], 0x40
je 0x3a4dad
pop esi
pop ebx
mov dword [esp + 8], 0xee00004
mov eax, dword [esp + 8]
pop edi
pop ebp
add esp, 0xd0
ret 0xc
cmp dword [eax + ecx*4 + 8], esi
jne 0x3a4dcc
pop esi
pop ebx
mov dword [esp + 8], 0xee00022
mov eax, dword [esp + 8]
pop edi
pop ebp
add esp, 0xd0
ret 0xc
mov eax, dword [ebx + 0x12f7c]
add dword [eax + ecx*4 + 8], 0xffffffff
lea eax, [eax + ecx*4 + 8]
mov eax, dword [ebx + 0x12f7c]
cmp dword [eax + ecx*4 + 8], esi
jne 0x3a4dee
mov dword [eax + ecx*4], 0x10
mov eax, 1
shl eax, cl
mov dword [esp + 0x20], esi
not eax
and dword [ebp + 0x7a4], eax
mov dword [edx + 0x260], esi
mov dword [edx + 0x264], esi
cmp dword [ebx + 0x1044c], esi
jbe 0x3a4e8f
mov ecx, dword [esp + 0x1c]
add ecx, 0x24c
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
push eax
push ebp
push ebx
call fcn.0039ac20
mov esi, eax
lea ecx, [esi + 0x30]
xor edi, edi
mov dword [esp + 0x14], ecx
lea esp, [esp]
test byte [esi + 8], 1
je 0x3a4e54
mov edx, dword [esp + 0x14]
push edi
push edx
push esi
push ebp
push ebx
call fcn.003a1260
add dword [esp + 0x14], 0x140
add edi, 1
cmp edi, 1
jle 0x3a4e40
mov eax, dword [esi + 8]
test al, 1
je 0x3a4e77
and al, 0xfe
mov dword [esi + 0xc], 0
mov dword [esi + 8], eax
mov eax, dword [esp + 0x20]
add dword [esp + 0x18], 4
add eax, 1
cmp eax, dword [ebx + 0x1044c]
mov dword [esp + 0x20], eax
jb 0x3a4e23
mov eax, dword [ebx + 0x12f7c]
cmp dword [eax + 8], 0
mov dword [esp + 0x10], 0
jne 0x3a4ef3
cmp dword [eax + 0xc], 0
jne 0x3a4ef3
push 0
push 0
push 0
push 0
push ebx
call fcn.0004b070
push 8
lea edx, [esp + 0x24]
push edx
push 0x2c7
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x12f7c]
mov dword [esp + 0x2c], 2
mov ecx, dword [eax + 0x38]
push 0xbfef0100
push ebx
mov dword [esp + 0x38], ecx
call fcn.000485c0
test eax, eax
je 0x3a4ef3
mov dword [esp + 0x10], 0xee00000
mov eax, dword [ebx + 0x12f7c]
cmp dword [eax + 0x3c], 0
je 0x3a4f14
mov edx, dword [ebx + 4]
mov eax, dword [eax + 0x3c]
lea ecx, [esp + 0x30]
push ecx
push edx
mov dword [esp + 0x38], eax
call fcn.0038cd20
mov edi, dword [esp + 0xec]
test byte [edi + 2], 4
mov esi, dword [esp + 0x1c]
je 0x3a4f36
mov eax, dword [edi + 4]
or dword [esi + 0x2a4], eax
mov dword [esp + 0x10], 0
test byte [edi + 2], 8
je 0x3a4f4f
mov ecx, dword [edi + 4]
not ecx
and dword [esi + 0x2a4], ecx
mov dword [esp + 0x10], 0
test byte [edi + 3], 2
je 0x3a4f8c
mov eax, dword [esi + 0x1e8]
mov edx, dword [edi + 0x3c]
mov dword [esi + 0x1e8], edx
cmp eax, dword [edi + 0x3c]
je 0x3a4f84
cmp dword [esi + 0x268], 1
jle 0x3a4f84
push 0x10040
push 0
push 0
push 0
push ebp
push ebx
call fcn.0039cf80
mov dword [esp + 0x10], 0
mov eax, dword [ebp + 8]
add dword [eax], 1
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov dword [esi + 0xc8], ecx
test byte [edi + 1], 0x80
je 0x3a4fad
and byte [esi + 7], 0x7f
push ebx
call fcn.003900f0
mov eax, dword [esp + 0x10]
pop esi
pop ebx
pop edi
pop ebp
add esp, 0xd0
ret 0xc