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

Disassembly:
sub esp, 0xd4
mov eax, dword [0x10140004]
xor eax, esp
mov dword [esp + 0xcc], eax
push ebx
mov ebx, dword [esp + 0xdc]
push ebp
mov ebp, ecx
mov dword [esp + 0x20], edx
push esi
push edi
mov dword [esp + 0x34], ebp
mov eax, dword [ebp]
mov esi, dword [ebp + 8]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], 0
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x68], esi
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], ecx
cmp dword [eax + 0x24], ecx
je 0x100ad572
mov eax, dword [eax + 0xc]
jmp 0x100adea5
mov eax, dword [esi + 0x2c]
mov edx, 0x18
test al, 0x20
movzx ecx, word [esi + 0x18]
mov dword [esp + 0x48], eax
mov eax, 0x1bf
cmove edx, eax
mov dword [esp + 0x40], ecx
movzx eax, word [esi + 0x1a]
mov dword [esp + 0x58], eax
movzx eax, word [esi + 0x1c]
mov dword [esp + 0x5c], eax
movzx eax, word [esi + 0x32]
mov dword [esp + 0x64], eax
movzx eax, word [esi + 0x30]
mov dword [esp + 0x60], eax
mov eax, dword [esi]
mov dword [esp + 0x50], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x54], eax
movzx eax, word [esi + 0x16]
mov edi, eax
mov dword [esp + 0x44], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x70], edi
movzx edi, cx
mov ecx, edx
and ecx, 0xffffffc3
mov dword [esp + 0x1c], edi
and al, 4
mov eax, dword [esp + 0x28]
cmove ecx, edx
mov edx, dword [ebp + 4]
push ebx
push ecx
push edi
push dword [eax + 0x2c]
lea ecx, [esp + 0x88]
call fcn.100aacb0
mov ebp, eax
add esp, 0x10
xor eax, eax
mov word [esi + 0x12], ax
mov ecx, dword [ebx + 8]
movzx ecx, word [ecx]
mov eax, ecx
mov dword [esp + 0x6c], eax
cmp ax, 0xa
jg 0x100ad61f
mov dword [esp + 0x24], 0
jmp 0x100ad638
movsx eax, cx
cdq
push edx
push eax
call fcn.10022070
add esp, 8
sub ax, 0x21
movzx eax, ax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xec]
mov ecx, 0x100
mov dword [esp + 0x30], eax
test ebp, ebp
je 0x100add6d
movzx edx, word [ebp + 0xc]
mov eax, edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x3c], eax
cmp ax, cx
je 0x100ad66d
test byte [ebp + 0xa], 0x80
je 0x100ad698
mov eax, dword [ebx + 4]
movsx ecx, word [eax + edi*2]
test ecx, ecx
js 0x100ad68f
mov eax, dword [ebx + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*8 + 4]
and eax, 0xf
jne 0x100add52
jmp 0x100ad698
cmp ecx, 0xffffffff
je 0x100add52
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
and ecx, dword [ebp + 0x20]
and eax, dword [ebp + 0x24]
or ecx, eax
jne 0x100add52
mov eax, 0x100
test word [ebp + 0xa], ax
je 0x100ad6c0
cmp edx, 0x10
je 0x100add52
mov eax, dword [esp + 0x28]
mov cl, byte [eax + 0x24]
test cl, 0x58
je 0x100ad6fd
mov eax, dword [ebp]
mov edx, dword [eax + 4]
test dl, 3
je 0x100add52
mov edi, dword [esp + 0x28]
mov eax, dword [eax + 0x24]
cmp eax, dword [edi + 0x2c]
mov edi, dword [esp + 0x1c]
jne 0x100add52
test cl, 0x18
je 0x100ad6fd
test dl, 2
jne 0x100add52
cmp byte [ebx + 0x36], 0
je 0x100ad716
movzx eax, word [ebx + 0x32]
dec eax
cmp edi, eax
jne 0x100ad716
mov eax, dword [esp + 0x34]
or byte [eax + 0x10], 2
jmp 0x100ad71e
mov eax, dword [esp + 0x34]
or byte [eax + 0x10], 1
mov eax, dword [esp + 0x48]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x5c]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0x60]
mov word [esi + 0x30], ax
cmp ax, word [esi + 0x34]
jb 0x100ad768
mov ebx, dword [esp + 0x2c]
mov edx, esi
movzx eax, ax
mov ecx, ebx
inc eax
push eax
call fcn.100aca20
add esp, 4
test eax, eax
jne 0x100ade96
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov dword [eax + ecx*4], ebp
mov ax, word [esi + 0x30]
mov ecx, dword [esi + 8]
inc ax
mov word [esi + 0x30], ax
not ecx
or edx, dword [ebp + 0x24]
or edi, dword [ebp + 0x20]
movzx ebx, ax
and edi, ecx
mov eax, dword [esi + 0xc]
not eax
mov dword [esi], edi
and edx, eax
mov eax, dword [esp + 0x3c]
mov dword [esi + 4], edx
test al, 1
je 0x100ad8b2
mov edx, dword [ebp]
test dword [edx + 4], 0x1000
je 0x100ad82d
lea edi, [ebx - 1]
mov dword [esp + 0x18], 0x2e
xor ecx, ecx
test edi, edi
jle 0x100ad84e
mov ebx, dword [esi + 0x38]
mov esi, dword [esp + 0x18]
mov eax, dword [ebx + ecx*4]
test eax, eax
je 0x100ad7ea
cmp dword [eax], edx
mov dword [esp + 0x18], 0
cmove esi, dword [esp + 0x18]
inc ecx
cmp ecx, edi
jl 0x100ad7d4
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
test byte [eax + 0x38], 0x80
je 0x100ad89e
cmp word [esp + 0x24], 0xa
jl 0x100ad89e
mov eax, dword [eax + 8]
mov edx, dword [esp + 0x1c]
movzx edi, cx
movzx ebx, word [eax + edx*2]
cmp di, 0xa
jg 0x100ad855
xor eax, eax
jmp 0x100ad86a
mov eax, dword [edx + 0x14]
test eax, eax
je 0x100ad7f7
mov eax, dword [eax]
test eax, eax
je 0x100ad7f7
cdq
push edx
push eax
call fcn.10022070
movsx ecx, ax
add esp, 8
mov dword [esp + 0x18], ecx
jmp 0x100ad7fb
mov ecx, 0x2e
jmp 0x100ad7fb
movsx eax, di
cdq
push edx
push eax
call fcn.10022070
add esp, 8
sub ax, 0x21
movzx eax, ax
sub eax, edi
sub eax, dword [esp + 0x24]
add eax, 0xa
add eax, ebx
test ax, ax
jns 0x100ad89e
cmp word [esp + 0x30], 2
jge 0x100add4a
mov eax, dword [esp + 0x2c]
test dword [eax + 0x50], 0x20000
jne 0x100add4a
or dword [esi + 0x2c], 0x100000
or dword [esi + 0x2c], 4
mov ebx, dword [esi + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
jmp 0x100ada10
mov edi, dword [esp + 0x10]
test al, 0x82
je 0x100ad94a
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x1c]
movsx eax, word [eax + ecx*2]
mov ecx, dword [esi + 0x2c]
or ecx, 1
mov dword [esi + 0x2c], ecx
cmp eax, 0xffffffff
je 0x100ad91b
mov edx, ecx
mov ebx, ecx
test eax, eax
js 0x100ad928
cmp word [esp + 0x30], 0
jne 0x100ad928
movzx edi, word [edi + 0x32]
lea eax, [edi - 1]
cmp dword [esp + 0x1c], eax
jne 0x100ad928
mov eax, dword [esp + 0x10]
test byte [eax + 0x38], 8
jne 0x100ad91b
cmp edi, 1
jne 0x100ad911
cmp byte [eax + 0x36], 0
je 0x100ad911
cmp word [esp + 0x3c], 2
je 0x100ad91b
mov ebx, ecx
or ebx, 0x10000
jmp 0x100ad923
mov ebx, ecx
or ebx, 0x1000
mov edx, ebx
mov dword [esi + 0x2c], ebx
cmp byte [esp + 0x91], 1
jbe 0x100ad93d
mov ebx, edx
or ebx, 0x200000
mov dword [esi + 0x2c], ebx
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
jmp 0x100ada10
test eax, 0x100
je 0x100ad961
or dword [esi + 0x2c], 8
mov ebx, dword [esi + 0x2c]
mov edx, dword [esp + 0x20]
jmp 0x100ada10
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x4c]
push ebp
push dword [esp + 0x20]
mov edx, dword [eax + 0x2c]
push edi
call fcn.100ad310
mov ebx, dword [esi + 0x2c]
add esp, 0xc
test byte [esp + 0x3c], 0x24
je 0x100ad9ea
or ebx, 0x22
mov word [esi + 0x1a], ax
xor ecx, ecx
mov dword [esi + 0x2c], ebx
mov eax, 0x100
mov dword [esp + 0x20], ebp
mov dword [esp + 0x38], ecx
test word [ebp + 0xa], ax
je 0x100ad9e4
movzx eax, word [esi + 0x30]
lea ebx, [ebp + 0x30]
mov ecx, dword [esp + 0x2c]
inc eax
push eax
mov edx, esi
mov dword [esp + 0x3c], ebx
call fcn.100aca20
add esp, 4
test eax, eax
jne 0x100add71
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov dword [eax + ecx*4], ebx
mov eax, 1
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x10
mov ebx, dword [esi + 0x2c]
mov word [esi + 0x1c], ax
mov edx, dword [esp + 0x20]
jmp 0x100ada10
or ebx, 0x12
mov word [esi + 0x1c], ax
mov dword [esi + 0x2c], ebx
mov dword [esp + 0x38], ebp
test bl, 0x20
je 0x100ada0a
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edx, dword [eax + ecx*4 - 8]
jmp 0x100ada0c
xor edx, edx
mov dword [esp + 0x20], edx
test bl, 2
je 0x100adab5
movzx eax, word [esi + 0x16]
movsx edi, ax
test edx, edx
je 0x100ada3a
movzx ecx, word [edx + 8]
test cx, cx
jg 0x100ada31
add eax, ecx
jmp 0x100ada3a
test byte [edx + 0xa], 0x80
jne 0x100ada3a
sub eax, 0x14
mov ebp, dword [esp + 0x38]
movzx ecx, ax
test ebp, ebp
je 0x100ada5e
movzx edx, word [ebp + 8]
test dx, dx
jg 0x100ada52
add eax, edx
jmp 0x100ada5b
test byte [ebp + 0xa], 0x80
jne 0x100ada5e
add eax, 0xffffffec
movzx ecx, ax
mov eax, dword [esp + 0x20]
movzx edx, cx
test eax, eax
je 0x100ada81
cmp word [eax + 8], 0
jle 0x100ada81
test ebp, ebp
je 0x100ada81
cmp word [ebp + 8], 0
jle 0x100ada81
lea eax, [ecx - 0x14]
movzx edx, ax
xor eax, eax
cmp dword [esp + 0x20], eax
setne al
sub edi, eax
xor eax, eax
test ebp, ebp
setne al
sub edi, eax
cmp dx, 0xa
mov eax, 0xa
cmovl edx, eax
movzx eax, dx
cmp eax, edi
mov edx, eax
movzx eax, di
cmovge edx, eax
movzx eax, dx
mov edi, eax
jmp 0x100adb10
inc word [esi + 0x18]
movzx ecx, word [ebp + 8]
movzx edx, word [esi + 0x18]
test cx, cx
jg 0x100adae2
mov eax, dword [edi + 4]
mov ebp, dword [esp + 0x1c]
cmp word [eax + ebp*2], 0
jl 0x100adae2
sub ecx, dword [esp + 0x18]
add word [esi + 0x16], cx
movzx edi, word [esi + 0x16]
jmp 0x100adb14
mov eax, dword [edi + 8]
mov cx, word [eax + edx*2]
sub cx, word [eax + edx*2 - 2]
add cx, word [esi + 0x16]
test dword [esp + 0x3c], 0x100
movzx edi, cx
movzx eax, cx
mov word [esi + 0x16], cx
mov dword [esp + 0x14], edi
je 0x100adb18
add eax, 0xa
movzx edi, ax
mov word [esi + 0x16], ax
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0x10]
movzx ebp, di
mov eax, dword [ecx + 0x38]
and eax, 3
cmp al, 3
jne 0x100adb31
lea eax, [edi + 0x10]
movzx edi, ax
jmp 0x100adb53
movsx ecx, word [ecx + 0x30]
mov eax, ecx
shl eax, 4
sub eax, ecx
mov ecx, dword [esp + 0x28]
cdq
mov ecx, dword [ecx + 0x10]
movsx ecx, word [ecx + 0x28]
idiv ecx
inc eax
add eax, edi
movzx edi, ax
lea eax, [ebp + 0x10]
movzx eax, ax
movzx ebp, ax
mov eax, dword [esp + 0x24]
movsx ecx, ax
movsx edx, di
cmp ax, di
jl 0x100adb93
lea eax, [edx + 0x31]
cmp ecx, eax
jle 0x100adb75
mov eax, dword [esp + 0x24]
jmp 0x100adbb7
lea eax, [edx + 0x1f]
cmp ecx, eax
jle 0x100adb83
mov eax, dword [esp + 0x24]
inc eax
jmp 0x100adbb7
sub ecx, edx
movzx eax, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add ax, word [esp + 0x24]
jmp 0x100adbb7
lea eax, [ecx + 0x31]
cmp edx, eax
jle 0x100adb9f
movzx ecx, di
jmp 0x100adbba
lea eax, [ecx + 0x1f]
cmp edx, eax
jle 0x100adbab
lea eax, [edi + 1]
jmp 0x100adbb7
sub edx, ecx
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, di
movzx ecx, ax
movzx eax, cx
test ebx, 0x4000140
jne 0x100adc42
mov ebx, ebp
movsx edx, cx
mov ebp, dword [esp + 0x14]
movsx edi, bp
add edi, 0x10
cmp cx, bx
jl 0x100adc0e
lea eax, [edi + 0x31]
cmp edx, eax
jle 0x100adbe8
movzx eax, cx
movzx eax, ax
jmp 0x100adc46
lea eax, [edi + 0x1f]
cmp edx, eax
jle 0x100adbfa
lea eax, [ecx + 1]
movzx eax, ax
movzx eax, ax
jmp 0x100adc46
sub edx, edi
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, cx
movzx eax, ax
movzx eax, ax
jmp 0x100adc46
lea eax, [edx + 0x31]
cmp edi, eax
jle 0x100adc1c
mov eax, ebx
movzx eax, ax
jmp 0x100adc46
lea eax, [edx + 0x1f]
cmp edi, eax
jle 0x100adc2e
lea eax, [ebx + 1]
movzx eax, ax
movzx eax, ax
jmp 0x100adc46
sub edi, edx
movzx eax, byte [edi + str._n_n_t_t_b_b_a_a_a]
add ax, bx
movzx eax, ax
movzx eax, ax
jmp 0x100adc46
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, esi
mov ebx, dword [esp + 0x34]
push dword [esp + 0x6c]
movzx edi, cx
add eax, edi
add eax, dword [esp + 0x34]
mov word [esi + 0x14], ax
lea eax, [edi + ebp]
add eax, dword [esp + 0x34]
mov word [esi + 0x16], ax
mov ecx, dword [ebx + 4]
call fcn.100ad0d0
add esp, 4
mov edx, esi
mov ecx, ebx
call fcn.100acdf0
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x2c]
test al, 2
movzx edx, cx
movzx ecx, bp
cmove edx, ecx
mov word [esi + 0x16], dx
test al, 0x10
jne 0x100add40
movzx ecx, word [esi + 0x18]
cmp cx, word [ebx + 0x34]
jae 0x100add40
cmp cx, word [ebx + 0x32]
jb 0x100adcc3
mov eax, dword [ebx + 0x38]
and al, 3
cmp al, 2
je 0x100add40
cmp ecx, 3
jbe 0x100add28
mov ebp, dword [esp + 0x4c]
mov ecx, dword [ebp]
cmp dword [ecx + 0x128], 0
je 0x100adce2
inc dword [ebp + 0x24]
mov dword [ebp + 0xc], 9
cmp dword [ecx + 0x174], 0
je 0x100add28
inc dword [ebp + 0x98]
mov eax, dword [ebp + 0x98]
cmp eax, dword [ecx + 0x17c]
jb 0x100add28
push dword [ecx + 0x178]
mov eax, dword [ecx + 0x174]
call eax
add esp, 4
test eax, eax
je 0x100add1e
inc dword [ebp + 0x24]
mov dword [ebp + 0xc], 9
mov dword [ebp + 0x98], 0
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
add eax, edi
mov ecx, dword [esp + 0x34]
push eax
push ebx
call fcn.100ad510
add esp, 8
mov eax, dword [esp + 0x44]
mov word [esi + 0x16], ax
jmp 0x100add4e
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x78]
call fcn.100aa950
cmp dword [esp + 0x14], 0
mov ebp, eax
mov ecx, 0x100
je 0x100ad648
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x50]
mov ebp, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov word [esi + 0x1a], cx
mov ecx, dword [esp + 0x5c]
mov dword [esi], eax
mov eax, dword [esp + 0x54]
mov word [esi + 0x1c], cx
mov ecx, dword [esp + 0x48]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x40]
mov dword [esi + 0x2c], ecx
mov ecx, dword [esp + 0x44]
mov word [esi + 0x18], ax
mov word [esi + 0x32], bp
mov word [esi + 0x16], cx
mov word [esi + 0x30], dx
cmp ax, bp
jne 0x100ade9f
mov ebp, dword [esp + 0x1c]
movzx ecx, word [edi + 0x32]
lea eax, [ebp + 1]
cmp eax, ecx
jae 0x100ade9f
cmp word [esp + 0x40], dx
jne 0x100ade9f
mov eax, dword [edi + 0x38]
test al, 0x40
jne 0x100ade9f
test al, al
jns 0x100ade9f
test dword [ebx + 0x50], 0x4000
jne 0x100ade9f
mov eax, dword [edi + 8]
cmp word [eax + ebp*2 + 2], 0x2a
jl 0x100ade9f
movzx eax, dx
mov ecx, ebx
inc eax
mov edx, esi
push eax
call fcn.100aca20
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x100adea3
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
inc word [esi + 0x18]
inc word [esi + 0x32]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4], ebx
add edx, 5
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x8000
mov eax, dword [edi + 8]
mov ecx, dword [esp + 0x34]
mov di, word [eax + ebp*2]
sub di, word [eax + ebp*2 + 2]
movzx eax, di
sub word [esi + 0x16], ax
add eax, edx
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
push eax
push edi
call fcn.100ad510
mov eax, dword [esp + 0x4c]
add esp, 8
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x64]
mov word [esi + 0x32], ax
mov eax, dword [esp + 0x48]
mov dword [esi + 0x2c], eax
jmp 0x100adea3
mov edi, dword [esp + 0x10]
jmp 0x100add75
mov ebx, dword [esp + 0x14]
mov eax, ebx
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.101049d1
add esp, 0xd4
ret