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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc0
mov edi, dword [ebp + 0x24]
mov esi, dword [ebp + 0x28]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], edi
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [esp + 0x28], edx
mov dword [esp + 8], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov eax, dword [ebp + 0x20]
mov ebx, 6
test eax, eax
js 0x412c1f
mov ebx, eax
mov eax, edi
or eax, esi
je 0x412c2e
mov eax, ebx
and eax, 0x400
jmp 0x412c54
mov dword [esp], edi
mov edi, esi
mov esi, ebx
and esi, 0x400
xor eax, eax
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x20], esi
je 0x412d01
test esi, esi
mov esi, edi
mov edi, dword [esp]
jne 0x412c5c
mov dword [esp + 0x20], eax
mov ax, 8
test ebx, 0x10000
mov dword [esp + 0x10], edx
mov dword [esp + 4], esi
jne 0x412c74
movzx eax, ax
or eax, 0x800
mov dword [esp + 0x84], eax
cmp dword [esp + 0x20], 0
setne al
and ebx, 0xf
mov dword [esp + 0x14], ebx
sete bl
mov esi, dword [ecx + 0x48]
test esi, esi
je 0x412f47
cmp dword [ecx + 0x14], 2
jne 0x412f47
cmp dword [ebp + 0x14], 0
setne cl
cmp dword [ebp + 0x10], 0
sete dl
cmp dword [ebp + 0xc], 0
je 0x412f47
and dl, cl
jne 0x412f47
cmp word [ebp + 0x1c], 0
setne cl
cmp dword [ebp + 0x18], 0
sete dl
test dl, cl
jne 0x412f47
cmp dword [esp + 0x14], 0xb
jae 0x412f47
cmp dword [esi + 0x34], 0
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10]
je 0x412d0b
cmp ecx, 0xffffffff
jne 0x412d21
mov dword [edx + 0x1c], 2
jmp 0x412f51
mov esi, edi
mov edi, dword [esp]
jmp 0x412c5c
cmp dword [esp + 4], 0
jne 0x412d1a
cmp ecx, 0xffff
jne 0x412d21
mov dword [esi + 0x34], 1
cmp dword [esp + 0x20], 0
je 0x412d3c
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0x2f
jne 0x412d52
mov dword [edx + 0x1c], 0x19
jmp 0x412f51
or edi, dword [esp + 4]
je 0x412e19
mov dword [edx + 0x1c], 0x18
jmp 0x412f51
mov ebx, dword [ebp + 0x2c]
mov byte [esp + 0x1c], 1
push dword [ebp + 0xc]
call fcn.0041d880
add esp, 4
cmp eax, 0x10000
jb 0x412d7b
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0x19
jmp 0x412f51
mov dword [esp], edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x98], ebx
movzx eax, word [ebp + 0x1c]
mov dword [esp + 0x88], eax
xor edx, edx
mov edi, 0xfffffffe
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
or ecx, eax
mov ecx, 0
je 0x412dc3
lea ecx, [edi + eax]
inc ecx
and ecx, dword [ebx]
mov ebx, eax
sub ebx, ecx
mov ecx, eax
or ecx, edi
and eax, 0xfffffffe
add ecx, eax
inc ecx
and ecx, ebx
mov dword [esp + 0x18], ecx
mov ecx, dword [esi + 4]
mov eax, ecx
xor eax, 0x2e
mov dword [esp + 0x24], ecx
add ecx, ecx
and ecx, 0x5c
xor ebx, ebx
mov edi, dword [esp + 0x3c]
add edi, dword [esp + 0x88]
setb bl
mov dword [esp + 0x80], edi
add eax, edi
adc ebx, 0
add eax, ecx
adc ebx, 0
add eax, 0x1c
adc ebx, 0
mov ecx, 0xfffffffe
cmp ecx, eax
sbb edx, ebx
jae 0x412e6e
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0xf
jmp 0x412f51
mov ecx, dword [ebp + 0xc]
cmp byte [ecx], 0x2f
je 0x412d30
or bl, al
mov edi, dword [ebp + 0x14]
push edi
push dword [ebp + 0x10]
push 0
call fcn.00403000
add esp, 0xc
mov dword [esp + 4], 0
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], 0
mov ecx, 0
cmp edi, 4
setb dl
jb 0x412e5d
mov ecx, dword [esp + 0x14]
or dl, bl
mov byte [esp + 0x1c], dl
mov dword [esp + 0x14], ecx
mov ebx, eax
jmp 0x412d5a
mov edx, dword [esi + 0x34]
test edx, edx
mov edi, dword [esp + 0x18]
jne 0x412ee1
mov eax, dword [esp + 0x3c]
mov ecx, eax
shr ecx, 0x1f
lea edx, [eax + eax]
xor ebx, ebx
mov eax, dword [esp + 0x88]
add eax, dword [ebp + 0x38]
setb bl
add eax, edx
adc ebx, ecx
add eax, edi
adc ebx, 0
add eax, dword [esp + 0x24]
adc ebx, 0
mov ecx, dword [ebp + 8]
add eax, dword [ecx]
adc ebx, dword [ecx + 4]
add eax, 0x4c
adc ebx, 0
lea ecx, [eax + eax]
and ecx, 0x2c
xor eax, 0x16
add eax, dword [ebp + 0x40]
adc ebx, 0
add eax, ecx
adc ebx, 0
lea ecx, [eax + eax]
and ecx, 0x20
xor edx, edx
add ecx, eax
adc ebx, 0
je 0x412ee1
mov dword [esi + 0x34], 1
mov edx, 1
mov dword [esp + 0x94], 0
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x412f18
mov eax, dword [ebp + 0xc]
cmp byte [ecx + eax - 1], 0x2f
jne 0x412f18
cmp dword [ebp + 0x14], 0
jne 0x412f47
mov dword [esp + 0x94], 0x10
mov ecx, dword [esp]
or ecx, dword [esp + 4]
jne 0x412f47
test edx, edx
je 0x412f21
mov edx, 0x1c
mov eax, dword [esp + 0x80]
add eax, dword [esp + 0x24]
add eax, edx
add eax, 0x2e
mov ecx, dword [esi + 8]
cmp ecx, eax
jae 0x412f9c
mov ebx, esi
mov esi, 1
test ecx, ecx
je 0x412f73
mov esi, ecx
jmp 0x412f73
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0x18
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, esi
and ecx, 2
mov edx, esi
or esi, 2
imul esi, ecx
xor ecx, 2
and edx, 0xfffffffd
imul edx, ecx
add esi, edx
cmp esi, eax
jb 0x412f5b
push esi
push dword [ebx + 0xc]
push dword [ebx]
mov edi, dword [ebp + 8]
push dword [edi + 0x34]
call dword [edi + 0x30]
add esp, 0x10
test eax, eax
je 0x41310b
mov dword [ebx], eax
mov dword [ebx + 8], esi
mov esi, ebx
mov edi, dword [esp + 0x18]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
inc eax
cmp ecx, eax
jae 0x412ffb
mov edi, esi
mov esi, 1
test ecx, ecx
je 0x412fce
mov esi, ecx
jmp 0x412fce
mov ecx, esi
and ecx, 2
mov edx, esi
or esi, 2
imul esi, ecx
xor ecx, 2
and edx, 0xfffffffd
imul edx, ecx
add esi, edx
cmp esi, eax
jb 0x412fb6
push esi
mov ebx, edi
push dword [edi + 0x1c]
push dword [edi + 0x10]
mov edi, dword [ebp + 8]
push dword [edi + 0x34]
call dword [edi + 0x30]
add esp, 0x10
test eax, eax
je 0x41310b
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x18], esi
mov esi, ebx
mov edi, dword [esp + 0x18]
cmp dword [ebp + 0x14], 0
sete cl
xor eax, eax
or cl, byte [esp + 0x1c]
jne 0x413025
push 0x4df40
push 1
mov eax, dword [ebp + 8]
push dword [eax + 0x34]
call dword [eax + 0x28]
add esp, 0xc
test eax, eax
je 0x413159
mov dword [esp], eax
mov dword [esp + 4], esi
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 0x10]
mov edx, ebx
push edi
mov esi, edi
mov edi, dword [esp + 0xc]
push edi
call fcn.004137c0
add esp, 8
test eax, eax
je 0x413117
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add eax, esi
adc ecx, 0
add ebx, esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
adc edi, 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov word [esp + 0x7c], 0
cmp dword [esp + 0x20], 0
sete bl
and bl, byte [esp + 0x1c]
mov edx, ebx
xor dl, 1
movzx edx, dl
shl edx, 3
mov dword [esp + 0x20], edx
mov edx, dword [esp + 4]
cmp dword [edx + 0x34], 0
je 0x41312b
mov byte [esp + 0x18], bl
mov dword [esp + 8], edi
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 4], 0
mov ebx, 0xfffffffe
cmp ebx, edi
mov esi, 0
sbb esi, edx
jb 0x413168
xor esi, esi
cmp ebx, eax
sbb esi, ecx
jb 0x413168
mov esi, eax
xor eax, eax
mov ebx, dword [ebp + 0x38]
jmp 0x4131b9
mov dword [edi + 0x1c], 0x10
jmp 0x412f51
push dword [esp]
mov eax, dword [ebp + 8]
push dword [eax + 0x34]
call dword [eax + 0x2c]
add esp, 8
jmp 0x412f51
cmp dword [esp + 0x44], 0
jne 0x4135da
test edi, edi
jne 0x4135da
mov dword [esp + 0x60], 0x4034b50
test bl, bl
mov dword [esp + 8], edi
jne 0x4132b5
mov dl, 0x14
jmp 0x4132b7
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0x10
jmp 0x412f51
xor esi, esi
cmp ebx, edi
mov edi, 0
sbb edi, edx
jb 0x41317c
mov edx, 0
jmp 0x413180
lea edx, [esp + 0x30]
jb 0x413186
xor edi, edi
jmp 0x41318a
lea edi, [esp + 0x40]
cmp ebx, eax
mov eax, 0
sbb eax, ecx
jae 0x413199
lea esi, [esp + 0x28]
mov ebx, dword [ebp + 0x38]
lea ecx, [esp + 0xa0]
mov dword [esp + 4], ecx
push esi
push edi
call fcn.00413860
add esp, 8
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
lea edx, [eax + ebx]
mov dword [esp + 0x60], 0x4034b50
cmp byte [esp + 0x18], 0
mov dword [esp + 0x24], eax
jne 0x4131d7
mov bl, 0x14
jmp 0x4131d9
xor ebx, ebx
mov byte [esp + 0x64], bl
mov byte [esp + 0x65], 0
movzx ebx, word [esp + 0x84]
mov byte [esp + 0x66], bl
mov byte [esp + 0x67], bh
mov ebx, dword [esp + 0x20]
mov byte [esp + 0x68], bl
mov dword [esp + 0x69], 0
mov dword [esp + 0x6d], 0
mov dword [esp + 0x71], 0
mov dword [esp + 0x75], 0
mov byte [esp + 0x79], 0
mov ebx, dword [esp + 0x3c]
mov byte [esp + 0x7a], bl
mov byte [esp + 0x7b], bh
mov byte [esp + 0x7c], dl
mov byte [esp + 0x7d], dh
lea edx, [esp + 0x60]
push 0x1e
push edx
push ecx
push esi
mov esi, dword [ebp + 8]
push dword [esi + 0x44]
call dword [esi + 0x3c]
add esp, 0x14
cmp eax, 0x1e
jne 0x413400
mov eax, esi
mov esi, edi
add esi, 0x1e
mov edi, dword [esp + 8]
adc edi, 0
push ebx
push dword [ebp + 0xc]
push edi
push esi
push dword [eax + 0x44]
call dword [eax + 0x3c]
add esp, 0x14
cmp eax, ebx
jne 0x4133f1
add esi, ebx
adc edi, 0
cmp dword [esp + 4], 0
mov ebx, edi
je 0x413387
lea eax, [esp + 0xa0]
mov edi, dword [esp + 0x24]
push edi
push eax
push ebx
push esi
mov eax, dword [ebp + 8]
push dword [eax + 0x44]
call dword [eax + 0x3c]
add esp, 0x14
cmp eax, edi
jne 0x41340c
add esi, edi
adc ebx, 0
jmp 0x41338f
xor edx, edx
mov byte [esp + 0x64], dl
mov edx, dword [esp + 0x84]
movzx ebx, dx
mov byte [esp + 0x66], dl
mov byte [esp + 0x67], bh
mov edx, dword [esp + 0x20]
mov byte [esp + 0x68], dl
mov dword [esp + 0x69], 0
mov dword [esp + 0x6d], 0
mov dword [esp + 0x71], 0
mov dword [esp + 0x75], 0
mov byte [esp + 0x79], 0
mov ebx, dword [esp + 0x3c]
mov byte [esp + 0x7a], bl
mov byte [esp + 0x7b], bh
mov edx, dword [ebp + 0x38]
mov byte [esp + 0x7c], dl
mov byte [esp + 0x7d], dh
lea edx, [esp + 0x60]
push 0x1e
push edx
push ecx
push eax
mov edi, dword [ebp + 8]
push dword [edi + 0x44]
call dword [edi + 0x3c]
add esp, 0x14
cmp eax, 0x1e
jne 0x41337b
mov esi, dword [esp + 0x10]
add esi, 0x1e
mov eax, dword [esp + 8]
adc eax, 0
push ebx
push dword [ebp + 0xc]
mov dword [esp + 0x10], eax
push eax
push esi
push dword [edi + 0x44]
call dword [edi + 0x3c]
add esp, 0x14
cmp eax, ebx
jne 0x4133f1
mov eax, esi
xor eax, ebx
and esi, ebx
mov ecx, esi
shr ecx, 0x1f
add esi, esi
add esi, eax
mov ebx, dword [esp + 8]
adc ebx, ecx
mov dword [esp + 4], 0
mov dword [esp + 0x24], 0
jmp 0x41338f
mov dword [edi + 0x1c], 0x13
jmp 0x412f51
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x38]
test edi, edi
je 0x4133b1
push edi
push dword [ebp + 0x34]
push ebx
push esi
push dword [eax + 0x44]
call dword [eax + 0x3c]
add esp, 0x14
cmp eax, edi
jne 0x41340c
add esi, edi
adc ebx, 0
mov edi, dword [ebp + 0x14]
movzx eax, byte [esp + 0x1c]
test al, al
je 0x41341b
push edi
push dword [ebp + 0x10]
push ebx
push esi
mov eax, dword [ebp + 8]
push dword [eax + 0x44]
call dword [eax + 0x3c]
add esp, 0x14
cmp eax, edi
jne 0x4133f1
add esi, edi
mov dword [esp + 0x10], esi
adc ebx, 0
mov dword [esp + 8], ebx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], 0
jmp 0x4134be
push dword [esp]
mov esi, dword [ebp + 8]
push dword [esi + 0x34]
call dword [esi + 0x2c]
add esp, 8
mov dword [esi + 0x1c], 0x13
jmp 0x412f51
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0x13
jmp 0x412f51
test edi, edi
je 0x4134b6
mov eax, dword [ebp + 8]
mov dword [esp + 0x48], eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
push 0
push 0xfffffffffffffff1
push dword [esp + 0x1c]
call fcn.00411c10
add esp, 0xc
lea ecx, [esp + 0x48]
push eax
push ecx
push 0x4138d0
mov esi, dword [esp + 0xc]
push esi
call fcn.004119e0
add esp, 0x10
mov dword [esp + 0x9c], edi
lea eax, [esp + 0x9c]
push 4
push 0
push 0
push eax
push dword [ebp + 0x10]
push esi
call fcn.00404520
add esp, 0x18
cmp eax, 1
jne 0x4135bb
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
jmp 0x4134be
mov dword [esp + 8], ebx
mov dword [esp + 0x10], esi
push dword [esp]
mov eax, dword [ebp + 8]
push dword [eax + 0x34]
call dword [eax + 0x2c]
add esp, 8
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov esi, ecx
mov dword [esp + 0x14], eax
or ecx, eax
je 0x4136d0
mov dword [esp + 0x48], 0x8074b50
mov edx, dword [esp + 0x98]
mov byte [esp + 0x4c], dl
mov byte [esp + 0x4d], dh
mov ecx, edx
shr ecx, 0x10
mov byte [esp + 0x4e], cl
mov ecx, edx
shr ecx, 0x18
mov byte [esp + 0x4f], cl
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
cmp dword [esp + 4], 0
je 0x4135d6
mov byte [esp + 0x50], cl
mov byte [esp + 0x51], ch
mov ebx, ecx
shr ebx, 0x10
mov byte [esp + 0x52], bl
mov ebx, edx
shr ebx, 0x10
shr ecx, 0x18
mov byte [esp + 0x53], cl
mov ecx, edx
shr ecx, 0x18
mov byte [esp + 0x54], dl
mov byte [esp + 0x55], dh
mov byte [esp + 0x56], bl
mov byte [esp + 0x57], cl
mov edx, esi
mov byte [esp + 0x58], dl
mov byte [esp + 0x59], dh
mov ecx, esi
shr ecx, 0x10
mov byte [esp + 0x5a], cl
mov ecx, esi
shr ecx, 0x18
mov byte [esp + 0x5b], cl
mov dword [esp + 0x18], 0x38
mov dword [esp + 0x90], 0x30
mov ecx, 0x28
mov dword [esp], 0x18
mov dword [esp + 0x1c], 0x17
mov eax, dword [esp + 0x14]
mov edx, eax
mov byte [esp + 0xf], al
mov dword [esp + 0x80], 0x16
mov dword [esp + 0x8c], 0x15
mov edi, 0x14
jmp 0x413635
push dword [esp]
mov esi, dword [ebp + 8]
push dword [esi + 0x34]
call dword [esi + 0x2c]
add esp, 8
mov dword [esi + 0x1c], 0xc
jmp 0x412f51
test edx, edx
je 0x4135e9
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0x1d
jmp 0x412f51
mov dword [esp + 0x50], ecx
mov dword [esp + 0x18], 0x18
mov dword [esp + 0x90], 0x10
mov ecx, 8
mov dword [esp + 0x1c], 0xf
mov dword [esp + 0x80], 0xe
mov edx, esi
mov byte [esp + 0xf], dl
mov dword [esp + 0x8c], 0xd
mov edi, 0xc
mov dword [esp], 0x10
mov edx, esi
mov ebx, dword [esp + 0x14]
shrd edx, ebx, cl
shr ebx, cl
movzx eax, byte [esp + 0xf]
mov byte [esp + edi + 0x48], al
test cl, 0x20
jne 0x413650
mov ebx, edx
mov edx, esi
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x14]
shrd edx, eax, cl
mov edi, dword [esp + 0x8c]
mov byte [esp + edi + 0x48], bl
mov ebx, eax
shr ebx, cl
test cl, 0x20
jne 0x413676
mov ebx, edx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
shrd esi, eax, cl
mov edx, esi
mov esi, dword [esp + 0x80]
mov byte [esp + esi + 0x48], bl
shr eax, cl
test cl, 0x20
jne 0x413697
mov eax, edx
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x48], al
lea eax, [esp + 0x48]
mov esi, dword [esp]
push esi
push eax
push dword [esp + 0x10]
push dword [esp + 0x1c]
mov eax, dword [ebp + 8]
push dword [eax + 0x44]
call dword [eax + 0x3c]
add esp, 0x14
cmp eax, esi
jne 0x412f51
mov eax, dword [esp]
add dword [esp + 0x10], eax
adc dword [esp + 8], 0
cmp dword [esp + 4], 0
je 0x41372f
xor edx, edx
mov eax, 0xfffffffe
cmp eax, dword [esp + 0x28]
mov eax, 0
sbb eax, dword [esp + 0x2c]
jb 0x4136f1
xor eax, eax
jmp 0x4136f5
lea eax, [esp + 0x28]
mov ecx, 0xfffffffe
cmp ecx, dword [esp + 0x30]
mov ecx, 0
sbb ecx, dword [esp + 0x34]
jb 0x413710
mov edi, 0
jmp 0x413714
lea edi, [esp + 0x40]
jae 0x41371a
lea edx, [esp + 0x30]
lea ecx, [esp + 0xa0]
push eax
push edi
call fcn.00413860
add esp, 8
mov dword [esp + 0x24], eax
movzx ebx, word [esp + 0x84]
movzx esi, word [esp + 0x20]
movzx eax, word [esp + 0x24]
movzx edi, word [esp + 0x3c]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
push dword [ebp + 0x40]
push dword [ebp + 0x3c]
push dword [esp + 0x9c]
push dword [esp + 0x38]
push dword [esp + 0x38]
push 0
push ebx
push esi
push dword [esp + 0xb8]
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x60]
push dword [esp + 0x60]
push dword [esp + 0xbc]
push dword [ebp + 0x18]
push eax
push dword [esp + 0x44]
push edi
call fcn.00413920
add esp, 0x48
test eax, eax
je 0x412f51
mov eax, dword [ebp + 8]
inc dword [eax + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
mov ecx, dword [esp + 8]
mov dword [eax + 4], ecx
mov eax, 1
jmp 0x412f53