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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
or dword [ebp - 0x14], 0xffffffff
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x50]
push edi
mov dword [ebp - 8], eax
mov eax, dword [esi + 0x14]
xor edi, edi
cmp eax, edi
mov ebx, ecx
je 0x5b41b4
cmp dword [eax + 0x14], edi
je 0x5b41b4
mov ecx, dword [eax + 0x2c]
sub ecx, dword [eax + 0x50]
add dword [ebp - 8], ecx
mov eax, dword [esi + 0x2c]
mov dword [ebp - 4], eax
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x40]
imul eax, eax, 7
pop ecx
push eax
mov eax, dword [ebx + 4]
push dword [eax + 0x28]
lea ecx, [ebp - 0x54]
call fcn.005b4d8a
lea eax, [ebp + 0x13]
push eax
lea eax, [ebp + 0xf]
push eax
push esi
mov ecx, ebx
call fcn.005b37aa
cmp dword [ebp - 0x34], edi
mov dword [ebp - 0x30], edi
jle 0x5b484e
lea ecx, [ebp - 0x40]
call fcn.005aa5b6
push dword [ebp + 0x14]
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 4]
push eax
mov ecx, ebx
call fcn.005b3b7e
mov eax, dword [ebp - 0x3c]
push edi
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x28], eax
call fcn.005aa5c3
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 4]
movzx eax, byte [eax]
inc dword [ebp - 4]
mov dword [ebp - 0xc], eax
and eax, 0xf
je 0x5b4270
cmp eax, 1
je 0x5b458c
jle 0x5b480a
cmp eax, 3
jle 0x5b440b
cmp eax, 4
je 0x5b4308
cmp eax, 5
je 0x5b429d
cmp eax, 6
jne 0x5b480a
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp byte [ebp + 0xf], 0
pop ecx
mov dword [ebp - 0x10], eax
jne 0x5b4286
mov dword [ebp - 0x10], edi
cmp dword [ebp - 0x10], edi
jne 0x5b477c
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x1c]
mov dword [ebp - 0x10], eax
jmp 0x5b477f
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp byte [ebp + 0xf], 0
pop ecx
mov dword [ebp - 0x10], eax
jne 0x5b42b3
mov dword [ebp - 0x10], edi
cmp dword [ebp - 0x10], edi
jne 0x5b42c3
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x1c]
mov dword [ebp - 0x10], eax
jmp 0x5b42c6
dec dword [ebp - 0x10]
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp dword [ebp - 0x14], 0xffffffff
pop ecx
mov ecx, dword [ebx + 0x78]
mov eax, dword [ecx + eax*4]
je 0x5b42e5
mov ecx, dword [ebp - 0x14]
or dword [ebp - 0x14], 0xffffffff
jmp 0x5b42ec
mov ecx, dword [ebp - 8]
add dword [ebp - 8], 4
lea edx, [ebp - 0x54]
push edx
push edi
push ecx
push dword [eax + 4]
mov ecx, esi
push dword [ebp + 0x14]
push dword [ebp - 0x10]
push edi
call fcn.005b2e34
jmp 0x5b44df
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp byte [ebp + 0xf], 0
pop ecx
mov dword [ebp - 0x10], eax
jne 0x5b431e
mov dword [ebp - 0x10], edi
cmp dword [ebp - 0x10], edi
jne 0x5b432e
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x1c]
mov dword [ebp - 0x10], eax
jmp 0x5b4331
dec dword [ebp - 0x10]
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp eax, dword [ebx + 0xe4]
pop ecx
mov dword [ebp - 0x20], eax
jb 0x5b438c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x54]
cmp eax, edi
jne 0x5b435d
mov ecx, dword [ebp + 0x14]
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
push edi
push edi
push edi
push edi
push dword [ebx + 0xe4]
mov dword [ebp - 0x2c], eax
call fcn.00597d5d
mov ecx, dword [ebx + 4]
push eax
push dword [ebp - 0x20]
call fcn.00597d5d
mov ecx, dword [ebp - 0x2c]
push eax
push 0x424
call fcn.005973e4
mov eax, dword [ebx + 0x9c]
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + ecx*4]
cmp eax, edi
mov dword [ebp - 0x28], eax
jne 0x5b43d7
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x54]
cmp eax, edi
jne 0x5b43b6
mov ecx, dword [ebp + 0x14]
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
push edi
push edi
push edi
push edi
push edi
push dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
call fcn.00597d5d
mov ecx, dword [ebp - 0x2c]
push eax
push 0x423
call fcn.005973e4
mov eax, dword [ebp - 0x14]
cmp eax, 0xffffffff
je 0x5b43e5
or dword [ebp - 0x14], 0xffffffff
jmp 0x5b43ec
mov eax, dword [ebp - 8]
add dword [ebp - 8], 4
lea ecx, [ebp - 0x54]
push ecx
push edi
push eax
mov eax, dword [ebp - 0x28]
push dword [eax + 4]
mov ecx, esi
push dword [ebp + 0x14]
push dword [ebp - 0x10]
push edi
call fcn.005b2e34
jmp 0x5b480a
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp byte [ebp + 0x13], 0
pop ecx
mov dword [ebp - 0x10], eax
jne 0x5b4421
mov dword [ebp - 0x10], edi
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
pop ecx
push dword [ebp + 0x14]
mov ecx, dword [ebx + 0x78]
push dword [ebp - 0xc]
mov eax, dword [ecx + eax*4]
push dword [ebp - 0x28]
mov ecx, esi
push dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
call fcn.005b3d91
push dword [ebp - 0x2c]
mov ecx, esi
push dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
call fcn.005b1fed
cmp dword [ebp - 0x10], edi
jbe 0x5b44f4
dec dword [ebp - 0x10]
cmp dword [ebp - 0x24], edi
jne 0x5b44d2
push dword [ebp - 0x10]
mov ecx, esi
call fcn.00553e20
test eax, eax
je 0x5b44d2
push dword [ebp - 0x10]
mov ecx, esi
call fcn.00553e20
cmp eax, dword [ebp - 0x20]
je 0x5b44d2
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x54]
cmp eax, edi
jne 0x5b449c
mov ecx, dword [ebp + 0x14]
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
push edi
push edi
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x10]
push edi
push edi
inc eax
push eax
call fcn.00597d5d
push eax
push dword [ebp - 0x10]
mov ecx, esi
call fcn.00553e20
mov ecx, dword [ebx + 4]
push eax
call fcn.00597de1
mov ecx, dword [ebp - 0x2c]
push eax
push 0x431
call fcn.005973e4
push dword [ebp - 0x20]
mov ecx, esi
push dword [ebp - 0x10]
call fcn.005b4c5a
test byte [ebp - 0xc], 0x40
je 0x5b4834
mov eax, dword [esi + 0x40]
add eax, dword [ebp - 0x10]
jmp 0x5b46cb
cmp dword [ebp - 0x24], edi
mov ecx, esi
je 0x5b4509
mov edi, dword [ebp - 0x24]
push dword [ebp - 0x20]
shr edi, 3
jmp 0x5b46b6
push dword [ebp - 0x18]
call fcn.00553e20
test eax, eax
je 0x5b4560
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x54]
cmp eax, edi
jne 0x5b452c
mov ecx, dword [ebp + 0x14]
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
push edi
push edi
push edi
push edi
push dword [ebp - 0x18]
mov dword [ebp - 0x2c], eax
call fcn.00597d5d
push eax
push dword [ebp - 0x18]
mov ecx, esi
call fcn.00553e20
mov ecx, dword [ebx + 4]
push eax
call fcn.00597de1
mov ecx, dword [ebp - 0x2c]
push eax
push 0x431
call fcn.005973e4
push dword [ebp - 0x20]
mov ecx, esi
push dword [ebp - 0x18]
call fcn.005b4c5a
test byte [ebp - 0xc], 0x40
je 0x5b4584
mov eax, dword [esi + 0x40]
push dword [ebp - 4]
add eax, dword [ebp - 0x18]
mov ecx, esi
push eax
call fcn.005b2857
inc dword [ebp - 0x18]
jmp 0x5b480a
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp byte [ebp + 0x13], 0
pop ecx
mov edi, eax
jne 0x5b45a0
xor edi, edi
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
pop ecx
push dword [ebp + 0x14]
mov ecx, dword [ebx + 0x78]
push dword [ebp - 0xc]
mov eax, dword [ecx + eax*4]
push dword [ebp - 0x28]
mov ecx, esi
push dword [ebp - 0x2c]
mov dword [ebp - 0x10], eax
call fcn.005b3d91
test edi, edi
je 0x5b46a8
dec edi
test eax, eax
jne 0x5b46b1
push edi
mov ecx, esi
call fcn.00553e20
test eax, eax
je 0x5b46b1
push edi
mov ecx, esi
call fcn.00553e20
cmp eax, dword [ebp - 0x10]
je 0x5b46b1
cmp byte [ebx + 0x108], 0
je 0x5b465a
push str._n__
push dword [ebp - 0x10]
mov ecx, esi
push str._new_method
push edi
call fcn.00553e20
mov ecx, dword [ebx + 4]
push eax
push str._existing_method
lea eax, [edi + 1]
push eax
push str.duplicate_disp_id
add ecx, 0x18
call fcn.005a81ea
mov ecx, eax
call fcn.005a837e
mov ecx, eax
call fcn.005a81ea
mov ecx, eax
call fcn.005a8578
mov ecx, eax
call fcn.005a81ea
mov ecx, eax
call fcn.005a8578
mov ecx, eax
call fcn.005a81ea
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x54]
test eax, eax
jne 0x5b4671
mov ecx, dword [ebp + 0x14]
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x2c], eax
xor eax, eax
push eax
push eax
push eax
push eax
lea eax, [edi + 1]
push eax
call fcn.00597d5d
push eax
push edi
mov ecx, esi
call fcn.00553e20
mov ecx, dword [ebx + 4]
push eax
call fcn.00597de1
mov ecx, dword [ebp - 0x2c]
push eax
push 0x431
call fcn.005973e4
jmp 0x5b46b1
test eax, eax
je 0x5b46d4
mov edi, eax
shr edi, 3
push dword [ebp - 0x10]
mov ecx, esi
push edi
call fcn.005b4c5a
test byte [ebp - 0xc], 0x40
je 0x5b4834
mov eax, dword [esi + 0x40]
add eax, edi
push dword [ebp - 4]
push eax
jmp 0x5b4803
mov edi, dword [ebp - 0x18]
cmp edi, dword [esi + 0x3c]
jb 0x5b4700
mov ecx, dword [ebx + 4]
push str._n__
push esi
push str.count_is_off_on_traits
add ecx, 0x18
call fcn.005a81ea
mov ecx, eax
call fcn.005a854b
mov ecx, eax
call fcn.005a81ea
push edi
mov ecx, esi
call fcn.00553e20
test eax, eax
je 0x5b4752
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0x48]
mov eax, dword [eax + 0x54]
test eax, eax
jne 0x5b4720
push 0x15
call fcn.005960e9
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x2c], eax
xor eax, eax
push eax
push eax
push eax
push eax
push edi
call fcn.00597d5d
push eax
push edi
mov ecx, esi
call fcn.00553e20
mov ecx, dword [ebx + 4]
push eax
call fcn.00597de1
mov ecx, dword [ebp - 0x2c]
push eax
push 0x431
call fcn.005973e4
push dword [ebp - 0x10]
mov ecx, esi
push edi
call fcn.005b4c5a
test byte [ebp - 0xc], 0x40
je 0x5b4773
mov eax, dword [esi + 0x40]
push dword [ebp - 4]
add eax, edi
push eax
mov ecx, esi
call fcn.005b2857
inc edi
mov dword [ebp - 0x18], edi
jmp 0x5b480a
dec dword [ebp - 0x10]
push edi
push dword [ebp + 0x14]
lea eax, [ebp - 4]
push eax
mov ecx, ebx
call fcn.005b3c39
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
cmp eax, edi
pop ecx
je 0x5b47a8
mov ecx, dword [ebp - 4]
movzx edi, byte [ecx]
inc dword [ebp - 4]
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x2c]
cmp edx, dword [ecx + 0x74]
jne 0x5b47cb
mov edx, dword [ebp - 8]
test dl, 7
je 0x5b47c1
mov dword [ebp - 0x14], edx
add edx, 4
mov ecx, edx
add edx, 8
mov dword [ebp - 8], edx
jmp 0x5b47e0
mov ecx, dword [ebp - 0x14]
cmp ecx, 0xffffffff
je 0x5b47d9
or dword [ebp - 0x14], 0xffffffff
jmp 0x5b47e0
mov ecx, dword [ebp - 8]
add dword [ebp - 8], 4
lea edx, [ebp - 0x54]
push edx
push edi
push ecx
push dword [ebp - 0x2c]
mov ecx, esi
push dword [ebp + 0x14]
push dword [ebp - 0x10]
push eax
call fcn.005b2e34
test byte [ebp - 0xc], 0x40
je 0x5b4834
push dword [ebp - 4]
push dword [ebp - 0x10]
mov ecx, esi
call fcn.005b2857
test byte [ebp - 0xc], 0x40
je 0x5b4834
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
xor edi, edi
cmp eax, edi
pop ecx
jle 0x5b4836
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 4]
push eax
call fcn.0054a7d0
dec dword [ebp - 0x2c]
pop ecx
jne 0x5b4823
jmp 0x5b4836
xor edi, edi
inc dword [ebp - 0x30]
mov eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x34]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x38], edi
jl 0x5b4204
mov eax, dword [esi + 0x30]
cmp eax, edi
je 0x5b4860
mov ecx, dword [esi + 0x40]
lea eax, [eax + ecx*4]
mov dword [ebp + 0x10], eax
jmp 0x5b4863
mov dword [ebp + 0x10], edi
mov ecx, dword [esi + 0x40]
xor eax, eax
cmp ecx, edi
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x34], ecx
jbe 0x5b48fd
mov ecx, dword [ebp + 0x10]
cmp dword [ecx + eax*4], edi
jne 0x5b48ed
cmp byte [ebx + 0x108], 0
je 0x5b48c3
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebx + 4]
push str._not_defined_by_compiler.__Using__n
push esi
push str._on
inc eax
push eax
push str.WARNING:_slot
add ecx, 0x18
call fcn.005a81ea
mov ecx, eax
call fcn.005a83cd
mov ecx, eax
call fcn.005a81ea
mov ecx, eax
call fcn.005a854b
mov ecx, eax
call fcn.005a81ea
mov eax, dword [ebp - 0x14]
cmp eax, 0xffffffff
je 0x5b48d1
or dword [ebp - 0x14], 0xffffffff
jmp 0x5b48d8
mov eax, dword [ebp - 8]
add dword [ebp - 8], 4
lea ecx, [ebp - 0x54]
push ecx
push edi
push eax
push edi
push dword [ebp + 0x14]
mov ecx, esi
push dword [ebp + 0xc]
push edi
call fcn.005b2e34
mov eax, dword [ebp + 0xc]
inc eax
cmp eax, dword [ebp - 0x34]
mov dword [ebp + 0xc], eax
jb 0x5b4876
mov eax, dword [ebp - 0x50]
cmp eax, edi
jbe 0x5b4af5
add eax, 0x10
push eax
mov eax, dword [ebx + 4]
push dword [eax + 0x28]
lea ecx, [ebp - 0x44]
call fcn.005b4d8a
lea eax, [esi + 0x28]
mov dword [ebp + 0xc], eax
mov eax, dword [eax]
cmp eax, edi
je 0x5b49e6
mov dword [ebp + 0x10], eax
mov eax, dword [eax + 0x48]
cmp eax, edi
mov dword [ebp + 0xc], eax
jne 0x5b495d
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0x48]
mov eax, dword [eax + 0x54]
cmp eax, edi
jne 0x5b494b
push 0x15
call fcn.005960e9
push edi
push edi
push edi
push edi
push edi
push edi
push 0x453
mov ecx, eax
call fcn.005973e4
lea eax, [ebp + 0xc]
push eax
call fcn.0054a7d0
cmp eax, 1
pop ecx
jg 0x5b496f
push 2
pop eax
push eax
lea ecx, [ebp - 0x44]
call fcn.005d2e55
lea eax, [ebp + 0xc]
push eax
call fcn.0054a7d0
pop ecx
push eax
lea ecx, [ebp - 0x44]
call fcn.005d2e55
lea eax, [ebp + 0xc]
push eax
call fcn.0054a7d0
pop ecx
push eax
lea ecx, [ebp - 0x44]
call fcn.005d2e55
lea eax, [ebp + 0xc]
push eax
call fcn.0054a7d0
pop ecx
push eax
lea ecx, [ebp - 0x44]
call fcn.005d2e55
lea eax, [ebp + 0xc]
push eax
call fcn.0054a7d0
mov esi, dword [ebp + 0xc]
cmp byte [esi], 0x49
pop ecx
mov dword [ebp + 0x14], eax
jne 0x5b49d5
push 0x49
push edi
lea ecx, [ebp - 0x54]
call fcn.005b4e2e
inc esi
dec dword [ebp + 0x14]
push dword [ebp + 0x14]
lea ecx, [ebp - 0x54]
push esi
call fcn.005b4e6d
jmp 0x5b4a8b
mov eax, dword [ebx + 4]
push edi
push dword [eax + 0x28]
push 0x64
call fcn.00442840
add esp, 0xc
cmp eax, edi
je 0x5b4a06
mov ecx, eax
call fcn.005b52f5
mov edi, eax
jmp 0x5b4a08
xor edi, edi
push esi
lea ecx, [edi + 4]
mov dword [ebp + 0x10], edi
call fcn.00479390
push ebx
lea ecx, [edi + 0xc]
call fcn.005c5f61
and dword [edi + 0x10], 0
push 1
mov ecx, edi
mov dword [edi + 0x18], 4
call fcn.005c2f2b
push esi
push 0
mov ecx, edi
call fcn.005c30bc
mov eax, dword [ebx + 4]
push dword [eax + 0x90]
lea ecx, [edi + 0x2c]
call fcn.00479390
mov ecx, dword [ebp + 0xc]
push edi
call fcn.005c5f61
or byte [edi + 0x1f], 0x20
push 2
lea ecx, [ebp - 0x44]
call fcn.005d2e55
push 1
lea ecx, [ebp - 0x44]
call fcn.005d2e55
push 1
lea ecx, [ebp - 0x44]
call fcn.005d2e55
push 1
lea ecx, [ebp - 0x44]
call fcn.005d2e55
push 0x47
lea ecx, [ebp - 0x54]
call fcn.005b34db
push dword [ebp - 0x50]
lea ecx, [ebp - 0x44]
call fcn.005d2e55
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x44]
call fcn.005b4d58
push 0
lea ecx, [ebp - 0x44]
call fcn.005d2e55
mov eax, dword [ebx + 4]
mov ecx, dword [eax + 0x28]
push 3
push 0
push dword [ebp - 0x40]
call fcn.005db870
mov ecx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x44]
mov edx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
push eax
mov eax, dword [ebp + 0x10]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [eax + 0x48]
push ecx
push eax
mov eax, dword [ebx + 4]
mov ecx, dword [eax + 0x28]
call fcn.004533b0
lea ecx, [ebp - 0x44]
call fcn.0059be40
mov esi, dword [ebp + 8]
xor edi, edi
mov ecx, dword [esi + 0x14]
cmp ecx, edi
je 0x5b4b11
cmp dword [ecx + 0x14], edi
je 0x5b4b11
mov eax, dword [ecx + 0x4c]
cmp eax, 0xffffffff
je 0x5b4b11
sub eax, dword [ecx + 0x50]
add eax, dword [esi + 0x50]
jmp 0x5b4b1e
test byte [esi + 0x20], 1
je 0x5b4b21
mov eax, dword [ebp - 8]
add dword [ebp - 8], 0x10
mov dword [esi + 0x4c], eax
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x54]
mov dword [esi + 0x2c], eax
call fcn.0059be40
pop edi
pop esi
pop ebx
leave
ret 0x10