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

Disassembly:
push 0xffffffffffffffff
push 0x4c9554
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4f59b8]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0040ed70
mov edi, 0x3f
cmp word [esi + 0xa8], di
jne 0x4122a1
cmp dword [esi + 0xac], 1
jne 0x4122a1
mov ecx, esi
call fcn.0040ed70
movzx ecx, word [esi + 0xa8]
movzx eax, cx
add eax, 0xffffffdf
xor ebx, ebx
cmp eax, 0x31
mov dword [esp + 0x18], 0x3e
ja case.0x41189f.41
movzx eax, byte [eax + 0x4123f4]
mov ebp, dword [esp + 0x50]
jmp dword [eax*4 + 0x4123d0]
mov ebx, 1
mov ecx, esi
call fcn.0040ed70
push 0xc
call fcn.0049f7e2
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
test edi, edi
mov dword [esp + 0x48], 0
je 0x4118f4
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx]
and edx, 0xffffffef
push edx
mov ecx, esi
call fcn.00411700
mov dword [edi + 4], eax
xor eax, eax
test ebx, ebx
sete al
mov dword [edi], vtable.CAssertElxT_0_.0
mov dword [edi + 8], eax
jmp 0x4118f6
xor edi, edi
push edi
mov ecx, esi
mov dword [esp + 0x4c], 0xffffffff
call fcn.0040a120
mov ecx, esi
mov edi, eax
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
movzx eax, word [esi + 0xb8]
cmp eax, 0x21
je 0x411929
cmp eax, 0x3d
je 0x41192e
jmp case.0x41189f.39
mov ebx, 1
mov ecx, esi
call fcn.0040ed70
mov ecx, esi
call fcn.0040ed70
push 0xc
call fcn.0049f7e2
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
test edi, edi
mov dword [esp + 0x48], 1
je 0x41197b
mov ecx, dword [ebp]
or ecx, 0x10
push ecx
mov ecx, esi
call fcn.00411700
xor edx, edx
test ebx, ebx
sete dl
mov dword [edi], vtable.CAssertElxT_0_.0
mov dword [edi + 4], eax
mov dword [edi + 8], edx
jmp 0x41197d
xor edi, edi
push edi
mov ecx, esi
mov dword [esp + 0x4c], 0xffffffff
call fcn.0040a120
mov edi, eax
test edi, edi
jne 0x412293
cmp word [esi + 0xa8], 0x50
jne case.0x41189f.34
mov ecx, esi
call fcn.0040ed70
movzx eax, word [esi + 0xa8]
cmp ax, 0x3c
jne 0x4119bf
mov dword [esp + 0x18], 0x3e
jmp 0x4119cd
cmp ax, 0x27
jne 0x4119cd
mov dword [esp + 0x18], 0x27
mov ecx, esi
call fcn.0040ed70
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], eax
add eax, 1
push 0x1c
mov dword [esi + 0xc], eax
call fcn.0049f7e2
add esp, 4
test eax, eax
je 0x4119ff
mov ecx, dword [ebp]
and ecx, 0x10
push ecx
mov ecx, eax
call fcn.0040ce30
jmp 0x411a01
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
push 0x20
mov dword [esp + 0x28], eax
call fcn.0049f7e2
add esp, 4
test eax, eax
je 0x411a30
mov edx, dword [ebp]
shr edx, 4
and edx, 1
push edx
push 0xffffffffffffffff
mov ecx, eax
call fcn.0040abc0
jmp 0x411a32
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
push 0x20
mov ebx, eax
call fcn.0049f7e2
add esp, 4
test eax, eax
je 0x411a61
mov ecx, dword [ebp]
shr ecx, 4
not ecx
and ecx, 1
push ecx
push 0xffffffffffffffff
mov ecx, eax
call fcn.0040abc0
jmp 0x411a63
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
xor ebp, ebp
mov dword [esp + 0x1c], eax
lea edi, [ebx + 0xc]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x2c], vtable.CBufferT_char_.0
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ebp
cmp word [esi + 0xa8], bp
mov dword [esp + 0x48], 2
je 0x411b0b
mov ebp, dword [esp + 0x18]
movzx eax, word [esi + 0xa8]
cmp ax, bp
je 0x411b07
push 1
movzx edx, ax
push 1
lea eax, [esp + 0x20]
push eax
mov ecx, edi
mov dword [esp + 0x24], edx
call fcn.0040aa30
movzx eax, word [esi + 0xa8]
movzx ecx, al
cmp cx, ax
jne 0x411adf
mov dl, byte [esi + 0xa8]
mov byte [esp + 0x14], dl
jmp 0x411ae4
mov byte [esp + 0x14], 0
push 1
push 1
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x38]
call fcn.0040a540
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], 0
jne 0x411aa1
mov ebp, dword [esp + 0x38]
mov ecx, esi
call fcn.0040ed70
test ebp, ebp
mov dword [esp + 0x18], ebp
jne 0x411b22
mov dword [esp + 0x18], 0x4d6a90
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x1c]
push edx
call fcn.0040a340
add esp, 8
test eax, eax
je 0x411b5c
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp byte [ecx], al
sete al
test eax, eax
je 0x411b5c
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [ebx + 4], eax
mov ecx, edi
mov dword [edx + 4], eax
call fcn.0040dad0
mov edi, dword [esp + 0x24]
lea ebp, [edi + 4]
push ebx
mov ecx, ebp
call fcn.0040a0d0
mov eax, dword [esp + 0x50]
mov ecx, dword [eax]
push ecx
mov ecx, esi
call fcn.00411700
push eax
mov ecx, ebp
call fcn.0040a0d0
mov edx, dword [esp + 0x1c]
push edx
mov ecx, ebp
call fcn.0040a0d0
mov ebx, dword [esp + 0x28]
push 0
push ebx
lea ecx, [esi + 0x50]
call fcn.0040ac40
mov eax, dword [esi + 0x5c]
mov dword [eax + ebx*4], edi
jmp 0x412170
mov ecx, esi
call fcn.0040ed70
push 8
call fcn.0049f7e2
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
test edi, edi
mov dword [esp + 0x48], 3
je 0x4118f4
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx]
push edx
mov ecx, esi
call fcn.00411700
mov dword [edi], vtable.CIndependentElxT_0_.0
mov dword [edi + 4], eax
jmp 0x4118f6
mov ecx, esi
call fcn.0040ed70
xor edi, edi
cmp word [esi + 0xa8], di
je 0x411c24
lea esp, [esp]
movzx eax, word [esi + 0xa8]
push eax
call fcn.004a0e69
add esp, 4
test eax, eax
je 0x411c24
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], di
jne 0x411c00
movzx eax, word [esi + 0xa8]
cmp ax, 0x3c
je 0x411d02
cmp ax, 0x27
je 0x411d02
xor ecx, ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], vtable.CBufferT_char_.0
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], ecx
cmp ax, di
mov dword [esp + 0x48], 5
je 0x411cbc
jmp 0x411c70
movzx eax, word [esi + 0xa8]
cmp ax, 0x29
je 0x411cb8
movzx ecx, al
cmp cx, ax
jne 0x411c91
mov dl, byte [esi + 0xa8]
mov byte [esp + 0x50], dl
jmp 0x411c96
mov byte [esp + 0x50], 0
push 1
push 1
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x38]
call fcn.0040a540
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], di
jne 0x411c70
mov ecx, dword [esp + 0x38]
cmp ecx, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x50], ecx
jne 0x411cd0
mov dword [esp + 0x50], 0x4d6a90
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.0040a340
push 0x20
call fcn.0049f7e2
add esp, 0xc
cmp eax, edi
je 0x41215b
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, eax
call fcn.0040ad80
jmp 0x41215d
sub ax, 0x3c
neg ax
push 0x20
sbb eax, eax
and eax, 0xffffffe9
add eax, 0x3e
movzx edx, ax
mov dword [esp + 0x1c], edx
call fcn.0049f7e2
add esp, 4
cmp eax, edi
je 0x411d31
push 0xfffffffffffffffd
mov ecx, eax
call fcn.0040ad80
jmp 0x411d33
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
mov ecx, esi
mov edi, eax
call fcn.0040ed70
xor ebp, ebp
lea ebx, [edi + 0xc]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x2c], vtable.CBufferT_char_.0
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ebp
cmp word [esi + 0xa8], bp
mov dword [esp + 0x48], 4
je 0x411dde
movzx eax, word [esi + 0xa8]
cmp ax, word [esp + 0x18]
je 0x411dda
push 1
movzx eax, ax
push 1
lea ecx, [esp + 0x58]
push ecx
mov ecx, ebx
mov dword [esp + 0x5c], eax
call fcn.0040aa30
movzx eax, word [esi + 0xa8]
movzx edx, al
cmp dx, ax
jne 0x411db2
mov al, byte [esi + 0xa8]
mov byte [esp + 0x50], al
jmp 0x411db7
mov byte [esp + 0x50], 0
push 1
push 1
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x38]
call fcn.0040a540
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], 0
jne 0x411d72
mov ebp, dword [esp + 0x38]
mov ecx, esi
call fcn.0040ed70
test ebp, ebp
mov dword [esp + 0x50], ebp
jne 0x411df5
mov dword [esp + 0x50], 0x4d6a90
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x54]
push eax
call fcn.0040a340
add esp, 8
test eax, eax
je 0x412167
mov ecx, dword [esp + 0x50]
xor eax, eax
cmp byte [ecx], al
sete al
test eax, eax
je 0x412167
mov edx, dword [esp + 0x28]
mov ecx, ebx
mov dword [edi + 8], edx
call fcn.0040dad0
jmp 0x412167
push 0x28
call fcn.0049f7e2
add esp, 4
test eax, eax
je 0x411e4c
mov ecx, eax
call fcn.0040ae40
jmp 0x411e4e
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
mov ebx, eax
lea eax, [esp + 0x2c]
xor ebp, ebp
push eax
lea ecx, [esi + 0xb8]
mov word [esp + 0x30], di
mov dword [esp + 0x34], 1
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
call fcn.0040a0a0
test eax, eax
mov ecx, esi
je 0x411e97
mov edi, dword [esp + 0x50]
push edi
call fcn.00411820
mov dword [ebx + 0x1c], eax
jmp 0x411ff7
call fcn.0040ed70
mov ebp, dword [esi + 0xb0]
push 0xc
call fcn.0049f7e2
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
test edi, edi
mov dword [esp + 0x48], 6
je 0x411ee2
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx]
push edx
mov ecx, esi
call fcn.00411700
mov dword [edi + 4], eax
mov dword [edi], vtable.CAssertElxT_0_.0
mov dword [edi + 8], 1
mov eax, edi
xor edi, edi
jmp 0x411ee6
xor edi, edi
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
mov dword [ebx + 0x1c], eax
mov eax, dword [esi + 0x90]
cmp eax, edi
jne 0x411f00
mov eax, 0x4d6a74
mov ecx, dword [esi + 0xb0]
push 1
sub ecx, ebp
push ecx
lea edx, [eax + ebp*2]
push edx
lea ecx, [ebx + 8]
call fcn.0040aa30
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], vtable.CBufferT_char_.0
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], edi
cmp ebp, dword [esi + 0xb0]
mov dword [esp + 0x48], 7
jge 0x411f95
nop
cmp ebp, dword [esi + 0x94]
jl 0x411f4c
xor eax, eax
jmp 0x411f56
mov eax, dword [esi + 0x90]
movzx eax, word [eax + ebp*2]
mov cl, al
push 1
push 1
and cx, 0xff
cmp cx, ax
setne dl
sub dl, 1
lea ecx, [esp + 0x34]
and edx, eax
lea eax, [esp + 0x1c]
push eax
mov byte [esp + 0x20], dl
call fcn.0040a540
add ebp, 1
cmp ebp, dword [esi + 0xb0]
jl 0x411f40
mov eax, dword [esp + 0x38]
cmp eax, edi
mov dword [esp + 0x18], eax
jne 0x411f9d
mov dword [esp + 0x18], 0x4d6a90
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x1c]
push edx
call fcn.0040a340
add esp, 8
or ebp, 0xffffffff
test eax, eax
je 0x411fd1
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp byte [ecx], al
sete al
cmp eax, edi
je 0x411fd1
mov edx, dword [esp + 0x28]
mov dword [ebx + 4], edx
mov dword [ebx + 0x1c], edi
jmp 0x411fdd
push ebx
lea ecx, [esi + 0x78]
mov dword [ebx + 4], ebp
call fcn.0040ae70
mov ecx, esi
call fcn.0040ed70
lea ecx, [esp + 0x2c]
mov dword [esp + 0x48], ebp
call fcn.0040a410
mov edi, dword [esp + 0x50]
xor ebp, ebp
mov eax, dword [edi]
lea ecx, [esp + 0x50]
push ecx
mov ecx, esi
mov dword [esp + 0x54], eax
call fcn.00411350
mov dword [ebx + 0x20], eax
cmp word [esi + 0xa8], 0x7c
jne 0x41203a
mov ecx, esi
call fcn.0040ed70
mov edx, dword [edi]
push edx
mov ecx, esi
call fcn.00411700
mov ecx, esi
mov dword [ebx + 0x24], eax
mov edi, ebx
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
mov ecx, esi
mov dword [ebx + 0x24], ebp
mov edi, ebx
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
xor edi, edi
cmp cx, di
je 0x412084
jmp 0x412060
movzx eax, word [esi + 0xa8]
push eax
call fcn.004a0e69
add esp, 4
test eax, eax
je 0x412084
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], di
jne 0x412060
movzx eax, word [esi + 0xa8]
cmp ax, 0x30
jb 0x41218f
cmp ax, 0x39
ja 0x41218f
xor ecx, ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], vtable.CBufferT_char_.0
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], ecx
cmp ax, di
mov dword [esp + 0x48], 8
je 0x41211c
jmp 0x4120d0
movzx eax, word [esi + 0xa8]
cmp ax, 0x29
je 0x412118
movzx ecx, al
cmp cx, ax
jne 0x4120f1
mov dl, byte [esi + 0xa8]
mov byte [esp + 0x50], dl
jmp 0x4120f6
mov byte [esp + 0x50], 0
push 1
push 1
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x38]
call fcn.0040a540
mov ecx, esi
call fcn.0040ed70
cmp word [esi + 0xa8], di
jne 0x4120d0
mov ecx, dword [esp + 0x38]
cmp ecx, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x50], ecx
jne 0x412130
mov dword [esp + 0x50], 0x4d6a90
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.0040a340
push 0x20
call fcn.0049f7e2
add esp, 0xc
cmp eax, edi
je 0x41215b
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, eax
call fcn.0040ad80
jmp 0x41215d
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
mov edi, eax
push edi
lea ecx, [esi + 0x3c]
call fcn.0040adf0
lea ecx, [esp + 0x2c]
mov dword [esp + 0x48], 0xffffffff
call fcn.0040a410
mov ecx, esi
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
mov edx, dword [esp + 0x50]
mov ebp, dword [edx]
mov edi, 1
lea ebx, [ebx]
cmp word [esi + 0xa8], 0
jne 0x4121b6
cmp dword [esi + 0xac], edi
je 0x41223e
movzx ecx, word [esi + 0xa8]
cmp cx, 0x3a
je 0x41223e
cmp cx, 0x29
je 0x41223e
cmp word [esi + 0xa8], 0x28
jne 0x4121db
cmp dword [esi + 0xac], edi
je 0x41223e
movzx ecx, cx
add ecx, 0xffffffd3
xor eax, eax
cmp ecx, 0x46
ja case.0x4121ef.46
movzx ecx, byte [ecx + 0x412440]
jmp dword [ecx*4 + 0x412428]
mov eax, 8
test ebx, ebx
je 0x412230
not eax
mov ecx, esi
and ebp, eax
call fcn.0040ed70
jmp 0x4121a0
mov eax, edi
jmp case.0x4121ef.46
mov eax, 2
jmp case.0x4121ef.46
mov eax, 4
jmp case.0x4121ef.46
not eax
mov ecx, esi
mov ebx, edi
and ebp, eax
call fcn.0040ed70
jmp 0x4121a0
mov ecx, esi
or ebp, eax
call fcn.0040ed70
jmp 0x4121a0
movzx eax, word [esi + 0xa8]
cmp ax, 0x3a
je 0x412282
cmp word [esi + 0xa8], 0x28
jne 0x41225d
cmp dword [esi + 0xac], edi
je 0x41227c
mov edx, dword [esp + 0x50]
push 0
mov ecx, esi
mov dword [edx], ebp
call fcn.0040ee10
mov ecx, esi
mov edi, eax
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
cmp ax, 0x3a
jne 0x412289
mov ecx, esi
call fcn.0040ed70
push ebp
mov ecx, esi
call fcn.00411700
mov edi, eax
mov ecx, esi
call fcn.0040ed70
mov eax, edi
jmp 0x4123ba
push 0x1c
call fcn.0049f7e2
mov ebx, dword [esp + 0x54]
xor ebp, ebp
add esp, 4
cmp eax, ebp
je 0x4122d8
mov ecx, dword [ebx]
mov dword [eax], vtable.CListElxT_0_.0
and ecx, 0x10
mov dword [eax + 8], ebp
mov dword [eax + 0xc], ebp
mov dword [eax + 4], vtable.CBufferT_class_ElxInterface__.0
mov dword [eax + 0x14], ebp
mov dword [eax + 0x10], ebp
mov dword [eax + 0x18], ecx
jmp 0x4122da
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
add dword [esi + 8], 1
mov edi, dword [esi + 8]
push 0x20
mov dword [esp + 0x54], eax
call fcn.0049f7e2
add esp, 4
cmp eax, ebp
je 0x412324
mov ecx, dword [ebx]
mov dword [eax], vtable.CBracketElxT_unsigned_short_int_.0
shr ecx, 4
and ecx, 1
mov dword [eax + 0x10], ebp
mov dword [eax + 0x14], ebp
mov dword [eax + 0xc], vtable.CBufferT_unsigned_short_int_.0
mov dword [eax + 0x1c], ebp
mov dword [eax + 0x18], ebp
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
jmp 0x412326
xor eax, eax
mov ebp, dword [esp + 0x50]
push eax
mov ecx, esi
add ebp, 4
call fcn.0040a120
push eax
mov ecx, ebp
call fcn.0040a0d0
mov eax, dword [ebx]
push eax
mov ecx, esi
call fcn.00411700
push eax
mov ecx, ebp
call fcn.0040a0d0
push 0x20
call fcn.0049f7e2
add esp, 4
test eax, eax
je 0x41238a
mov ecx, dword [ebx]
shr ecx, 4
not ecx
mov dword [eax], vtable.CBracketElxT_unsigned_short_int_.0
and ecx, 1
xor edx, edx
mov dword [eax + 0x10], edx
mov dword [eax + 0x14], edx
mov dword [eax + 0xc], vtable.CBufferT_unsigned_short_int_.0
mov dword [eax + 0x1c], edx
mov dword [eax + 0x18], edx
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
jmp 0x41238c
xor eax, eax
push eax
mov ecx, esi
call fcn.0040a120
push eax
mov ecx, ebp
call fcn.0040a0d0
push 0
push edi
lea ecx, [esi + 0x28]
call fcn.00409ed0
mov ecx, dword [esi + 0x34]
mov ebx, dword [esp + 0x50]
mov dword [ecx + edi*4], ebx
mov ecx, esi
call fcn.0040ed70
mov eax, ebx
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret 4