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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov dword [esp + 0x14], eax
xor eax, eax
xor esi, esi
cmp dword [ebp + 0x14], esi
setne al
movzx ecx, byte [eax + ebx + 0x19]
mov dword [esp + 0x54], eax
mov eax, dword [ebx + eax*4 + 0x1c]
mov dword [esp + 0x28], ecx
cmp ecx, esi
je 0x452325
cmp eax, esi
jne 0x452325
mov eax, dword [ebp + 0xc]
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x44]
push edx
push ebx
push eax
push edi
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x30], esi
call fcn.0044ffc0
add esp, 0x14
test eax, eax
jne 0x4522c1
xor ecx, ecx
cmp dword [ebx + 0x14], esi
mov dword [esp + 0x34], ecx
jle 0x451fea
mov eax, 3
mov dword [esp + 0x60], 0x50fd7c
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 0x50fd78
mov dword [esp + 0x6c], eax
jmp 0x451a84
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x451a91
mov edx, dword [eax + ecx*4]
jmp 0x451a97
mov edx, dword [ebp + 0x10]
mov edx, dword [edx + 0x24]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x451ab3
mov eax, dword [eax + 8]
mov eax, dword [eax + ecx*4]
lea ecx, [eax + eax*2]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + ecx*8]
jmp 0x451ab8
mov ecx, 0x5111e0
lea eax, [edx + edx*2]
mov edx, dword [ebp + 0x10]
mov edx, dword [edx]
mov edx, dword [edx + 0xc]
add eax, eax
add eax, eax
add eax, eax
mov edx, dword [eax + edx]
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x70], edx
mov eax, ecx
test ecx, ecx
je 0x451af0
cmp byte [ecx], 0
je 0x451ae9
inc eax
cmp byte [eax], 0
jne 0x451ae3
sub eax, ecx
and eax, 0x3fffffff
mov dword [esp + 0x5c], eax
mov eax, edx
test edx, edx
jne 0x451b00
mov dword [esp + 0x30], edx
jmp 0x451b16
cmp byte [edx], 0
je 0x451b0b
inc eax
cmp byte [eax], 0
jne 0x451b05
sub eax, edx
and eax, 0x3fffffff
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [edi]
push 1
mov dword [esp + 0x78], eax
push 0x1a
push ecx
lea eax, [esp + 0x7c]
call fcn.0043e990
mov esi, dword [edi]
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x4c], ebx
test ebx, ebx
jne 0x451b50
push eax
push esi
call fcn.0043eed0
push ebx
push esi
call fcn.0043eed0
add esp, 0x10
jmp 0x451b70
call fcn.0043e8a0
mov edx, dword [edi]
mov eax, dword [edx + 0x54]
cmp dword [ebx + 0x2c], eax
jle 0x451b70
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
call fcn.0041a700
mov edi, dword [ebp + 8]
add esp, 8
mov eax, dword [edi]
push 1
push 0x1a
push eax
lea eax, [esp + 0x64]
call fcn.0043e990
mov esi, dword [edi]
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x24], ebx
test ebx, ebx
jne 0x451ba2
push eax
push esi
call fcn.0043eed0
push ebx
push esi
call fcn.0043eed0
add esp, 0x10
jmp 0x451bc2
call fcn.0043e8a0
mov ecx, dword [edi]
mov eax, dword [ecx + 0x54]
cmp dword [ebx + 0x2c], eax
jle 0x451bc2
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
call fcn.0041a700
mov edi, dword [ebp + 8]
add esp, 8
mov edx, dword [edi]
push 1
push 0x1a
push edx
lea eax, [esp + 0x6c]
call fcn.0043e990
mov esi, dword [edi]
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x48], ebx
test ebx, ebx
jne 0x451bf4
push eax
push esi
call fcn.0043eed0
push ebx
push esi
call fcn.0043eed0
add esp, 0x10
jmp 0x451c14
call fcn.0043e8a0
mov eax, dword [edi]
mov eax, dword [eax + 0x54]
cmp dword [ebx + 0x2c], eax
jle 0x451c14
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
call fcn.0041a700
mov edi, dword [ebp + 8]
add esp, 8
mov esi, dword [edi]
mov ecx, 0x30
call fcn.004188e0
mov ebx, eax
mov dword [esp + 0x44], ebx
test ebx, ebx
je 0x451c48
push 0x30
push 0
push ebx
call fcn.004bfe20
add esp, 0xc
or ecx, 0xffffffff
mov byte [ebx], 0x76
mov word [ebx + 0x1e], cx
mov dword [ebx + 0x2c], 1
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
mov edi, dword [edi]
mov ecx, ebx
call fcn.0043ead0
test ebx, ebx
mov ebx, dword [ebp + 8]
je 0x451c7e
mov edx, dword [ebx]
mov eax, dword [edx + 0x54]
mov ecx, dword [esp + 0x44]
cmp dword [ecx + 0x2c], eax
jle 0x451c7e
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov edi, ebx
call fcn.0041a700
add esp, 8
mov esi, dword [ebx]
mov ecx, 0x30
call fcn.004188e0
mov esi, eax
mov dword [esp + 0x24], esi
test esi, esi
je 0x451cb2
push 0x30
push 0
push esi
call fcn.004bfe20
add esp, 0xc
or edx, 0xffffffff
mov byte [esi], 0x4c
mov word [esi + 0x1e], dx
mov dword [esi + 0x2c], 1
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov edi, dword [ebx]
call fcn.0043ead0
cmp dword [esp + 0x24], 0
je 0x451cea
mov eax, dword [ebx]
mov eax, dword [eax + 0x54]
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 0x2c], eax
jle 0x451cea
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov edi, ebx
call fcn.0041a700
add esp, 8
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
push edx
push eax
mov eax, dword [esp + 0x1c]
call fcn.0043eb90
add esp, 8
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x18], eax
je 0x451ee4
mov ecx, dword [ebx]
push 1
push 0x1a
push ecx
lea eax, [esp + 0x64]
call fcn.0043e990
mov edi, dword [ebx]
mov esi, eax
add esp, 0xc
mov dword [esp + 0x48], esi
test esi, esi
jne 0x451d40
push eax
push edi
call fcn.0043eed0
push esi
push edi
call fcn.0043eed0
add esp, 0x10
jmp 0x451d6a
mov ebx, esi
call fcn.0043e8a0
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov eax, dword [eax + 0x54]
cmp dword [esi + 0x2c], eax
jle 0x451d68
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov edi, edx
call fcn.0041a700
add esp, 8
mov ebx, edi
jmp 0x451d6a
mov ebx, edx
mov ecx, dword [ebx]
push 1
push 0x1a
push ecx
lea eax, [esp + 0x74]
call fcn.0043e990
mov edi, dword [ebx]
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x451d98
push eax
push edi
call fcn.0043eed0
push esi
push edi
call fcn.0043eed0
add esp, 0x10
jmp 0x451dc2
mov ebx, esi
call fcn.0043e8a0
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov eax, dword [eax + 0x54]
cmp dword [esi + 0x2c], eax
jle 0x451dc0
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov edi, edx
call fcn.0041a700
add esp, 8
mov ebx, edi
jmp 0x451dc2
mov ebx, edx
mov ecx, dword [ebx]
push 1
push 0x1a
push ecx
lea eax, [esp + 0x64]
call fcn.0043e990
mov edx, dword [ebx]
mov edi, eax
add esp, 0xc
mov dword [esp + 0x24], edi
mov dword [esp + 0x4c], edx
test edi, edi
jne 0x451dfb
push eax
mov edi, edx
push edi
call fcn.0043eed0
push 0
push edi
call fcn.0043eed0
add esp, 0x10
jmp 0x451e27
mov ebx, edi
call fcn.0043e8a0
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov eax, dword [ecx + 0x54]
cmp dword [edi + 0x2c], eax
jle 0x451e24
mov edi, dword [ebp + 8]
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
call fcn.0041a700
add esp, 8
mov ebx, edi
jmp 0x451e27
mov ebx, dword [ebp + 8]
mov edx, dword [ebx]
push 1
push 0x1a
push edx
lea eax, [esp + 0x6c]
call fcn.0043e990
mov edi, eax
mov eax, dword [ebx]
add esp, 0xc
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], eax
test edi, edi
jne 0x451e60
push edi
mov edi, eax
push edi
call fcn.0043eed0
push 0
push edi
call fcn.0043eed0
add esp, 0x10
jmp 0x451e8a
mov ebx, edi
call fcn.0043e8a0
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x54]
cmp dword [edi + 0x2c], eax
jle 0x451e88
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov edi, ecx
call fcn.0041a700
add esp, 8
mov ebx, edi
jmp 0x451e8a
mov ebx, ecx
push 0
push ecx
push 0
push esi
mov esi, dword [esp + 0x58]
push ebx
mov eax, 0x76
call fcn.0043eb30
mov esi, dword [esp + 0x38]
add esp, 0xc
mov edi, eax
mov eax, dword [esp + 0x4c]
push 0
push eax
push ebx
mov eax, 0x76
call fcn.0043eb30
add esp, 0x10
push eax
push ebx
mov esi, edi
mov eax, 0x46
call fcn.0043eb30
mov ecx, dword [esp + 0x28]
add esp, 0xc
push eax
mov eax, dword [esp + 0x18]
push ecx
call fcn.0043eb90
add esp, 8
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x28], 6
je 0x451fd2
mov eax, dword [esp + 0x28]
cmp eax, 9
jne 0x451f38
cmp dword [ebp + 0x14], 0
je 0x451fd2
push 0
push ecx
lea edx, [esp + 0x60]
push edx
xor esi, esi
push 0
push ebx
lea eax, [esi + 0x1a]
call fcn.0043eb30
mov edi, eax
add esp, 0xc
lea eax, [esp + 0x70]
push eax
push esi
push ebx
lea eax, [esi + 0x1a]
call fcn.0043eb30
add esp, 0x10
push eax
mov esi, edi
mov eax, 0x76
jmp 0x451f6c
push 0
push 0
cmp eax, 8
jne 0x451f65
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x58]
mov eax, dword [eax + ecx + 4]
test eax, eax
je 0x451f65
mov edx, dword [esp + 0x1c]
push eax
push edx
call fcn.0043f060
add esp, 0x10
jmp 0x451f75
mov eax, 0x62
xor esi, esi
push ebx
call fcn.0043eb30
add esp, 0xc
mov edx, dword [esp + 0x20]
mov ecx, eax
mov eax, ebx
call fcn.0043f8c0
mov dword [esp + 0x20], eax
test eax, eax
je 0x451fd2
mov edi, dword [esp + 0x70]
mov esi, dword [ebx]
mov ecx, eax
mov eax, dword [ecx]
mov ecx, dword [ecx + 0xc]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4 - 0x14]
mov dword [esp + 0x50], edx
test edi, edi
jne 0x451faa
xor esi, esi
jmp 0x451fcb
mov ebx, dword [esp + 0x30]
lea ecx, [ebx + 1]
call fcn.004188e0
mov esi, eax
test esi, esi
je 0x451fcb
push ebx
push edi
push esi
call fcn.004c0830
add esp, 0xc
mov byte [esi + ebx], 0
mov eax, dword [esp + 0x50]
mov dword [eax + 4], esi
mov eax, dword [esp + 0x34]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
inc eax
cmp eax, dword [ecx + 0x14]
mov dword [esp + 0x34], eax
jl 0x451a80
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
push edx
push esi
call fcn.004186a0
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
mov ecx, dword [ecx]
add esp, 8
mov dword [esp + 0x4c], ecx
mov eax, ecx
test ecx, ecx
je 0x45201f
cmp byte [ecx], 0
je 0x452018
inc eax
cmp byte [eax], 0
jne 0x452012
sub eax, ecx
and eax, 0x3fffffff
cmp dword [esp + 0x28], 6
mov dword [esp + 0x24], eax
jne 0x452189
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], ecx
mov eax, str.foreign_key_constraint_failed
jmp 0x452040
inc eax
cmp byte [eax], 0
jne 0x452040
sub eax, str.foreign_key_constraint_failed
and eax, 0x3fffffff
mov dword [esp + 0x6c], eax
inc eax
lea ecx, [eax + 0x30]
mov dword [esp + 0x50], ecx
call fcn.004188e0
mov ebx, eax
test ebx, ebx
je 0x4520c1
mov edx, dword [esp + 0x50]
push edx
push 0
push ebx
call fcn.004bfe20
mov esi, dword [esp + 0x78]
or eax, 0xffffffff
mov word [ebx + 0x1e], ax
lea eax, [esi + 1]
add esp, 0xc
mov byte [ebx], 0x38
test eax, eax
jne 0x45209a
mov ecx, 0x400
or word [ebx + 2], cx
mov dword [ebx + 4], eax
jmp 0x4520b6
push esi
lea eax, [ebx + 0x30]
push str.foreign_key_constraint_failed
push eax
mov dword [ebx + 4], eax
call fcn.004c0830
mov edx, dword [ebx + 4]
add esp, 0xc
mov byte [esi + edx], 0
mov dword [ebx + 0x2c], 1
mov byte [ebx + 1], 2
mov esi, dword [esp + 0x14]
mov ecx, 0x40
call fcn.004188e0
mov esi, eax
test esi, esi
je 0x452116
push 0x40
push 0
push esi
call fcn.004bfe20
mov edx, dword [esp + 0x20]
mov eax, 1
mov word [esi + 2], ax
movsx ecx, word [esi]
add esp, 0xc
push ecx
push eax
push edx
mov eax, esi
call fcn.0044b0a0
mov ecx, dword [esp + 0x20]
add esp, 0xc
cmp byte [ecx + 0x1e], 0
mov esi, eax
je 0x45211a
push esi
mov esi, ecx
call fcn.0044b2e0
add esp, 4
xor esi, esi
jmp 0x452157
movsx eax, word [esi]
lea edx, [eax*8]
sub edx, eax
lea eax, [esi + edx*8 - 0x30]
mov dword [esp + 0x44], eax
push ecx
lea eax, [esp + 0x74]
call fcn.00447cf0
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
add esp, 4
mov dword [ecx + 4], eax
push edx
xor eax, eax
call fcn.00447cf0
mov ecx, dword [esp + 0x48]
add esp, 4
mov dword [ecx], eax
mov edx, dword [esp + 0x18]
push 0
push 0
push 0
push 0
push 0
push 0
push edx
push esi
mov ecx, ebx
xor edx, edx
mov eax, edi
call fcn.0043f8c0
push edi
call fcn.00459f60
add esp, 0x24
mov dword [esp + 0x3c], eax
mov dword [esp + 0x18], 0
mov esi, dword [esp + 0x14]
mov al, byte [esi + 0xea]
mov ecx, dword [esp + 0x24]
add ecx, 0x4d
mov byte [esp + 0x13], al
mov byte [esi + 0xea], 0
call fcn.004188e0
mov ebx, eax
test ebx, ebx
je 0x4521c3
mov eax, dword [esp + 0x24]
add eax, 0x4d
push eax
push 0
push ebx
call fcn.004bfe20
add esp, 0xc
mov dword [esp + 0x50], ebx
test ebx, ebx
je 0x45226a
mov ecx, dword [esp + 0x24]
lea esi, [ebx + 0x24]
mov dword [ebx + 0x1c], esi
push ecx
mov dword [esi + 0x10], ecx
mov ecx, dword [esp + 0x50]
lea eax, [esi + 0x28]
push ecx
push eax
mov dword [esp + 0x38], esi
mov dword [esi + 0xc], eax
call fcn.004c0830
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
add esp, 0xc
push 0
push 1
push edx
push eax
call fcn.0043f060
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
push 1
push ecx
push edx
mov dword [esi + 0x14], eax
call fcn.0043f2e0
mov ecx, dword [esp + 0x30]
add esp, 0x1c
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x3c]
push 1
push eax
push ecx
call fcn.0043f7a0
mov dword [esi + 8], eax
mov eax, dword [esp + 0x28]
add esp, 0xc
test eax, eax
je 0x45226a
push 0
push eax
xor esi, esi
push edi
lea eax, [esi + 0x13]
call fcn.0043eb30
mov edx, dword [esp + 0x20]
add esp, 0xc
push esi
push 1
push eax
push edx
mov dword [esp + 0x2c], eax
call fcn.0043f060
add esp, 0x10
mov dword [ebx + 0xc], eax
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov al, byte [esp + 0x13]
push ecx
push edi
mov byte [edi + 0xea], al
call fcn.0043eed0
mov edx, dword [esp + 0x24]
push edx
push edi
call fcn.0043eed0
mov eax, dword [esp + 0x30]
push eax
call fcn.0043fa90
mov esi, dword [esp + 0x50]
add esp, 0x14
test esi, esi
je 0x4522b4
push esi
push edi
call fcn.00459ee0
push esi
push edi
call fcn.004186a0
add esp, 0x10
cmp byte [edi + 0x1e], 1
jne 0x4522ca
mov eax, edi
call fcn.00451050
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x28]
cmp eax, 6
je 0x4522f0
cmp eax, 9
jne 0x4522e7
cmp dword [ebp + 0x14], 0
jne 0x4522e7
mov eax, dword [esp + 0x2c]
mov byte [eax], 0x6a
jmp 0x4522f7
mov eax, dword [esp + 0x2c]
mov byte [eax], 0x6b
jmp 0x4522f7
mov eax, dword [esp + 0x2c]
mov byte [eax], 0x74
cmp dword [ebp + 0x14], 0
mov dword [eax + 4], ebx
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x44]
mov dword [ebx + 0x14], ecx
mov edx, dword [eax + 0x44]
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x54]
mov dword [ebx + 0x18], edx
setne dl
mov dword [eax + ecx*4 + 0x1c], ebx
mov eax, dword [esp + 0x50]
add dl, 0x6a
mov byte [ebx + 8], dl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret